{"version":3,"sources":["webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./src/views/triggerAlerts/StatusAlert.vue?8a1a","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/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.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/@syncfusion/ej2-charts/src/chart/series/stacking-line-series.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","webpack:///./src/views/templates/ATGReports/PositionReportTemplate.vue?d48f","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/line-base.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/stacking-column-series.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/textbox/textbox.component.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/scatter-series.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/@syncfusion/ej2-vue-calendars/src/datepicker/datepicker.component.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./src/common/syncfusion.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/chart.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.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/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./src/views/triggerAlerts/StatusAlert.vue?953c","webpack:///src/views/triggerAlerts/StatusAlert.vue","webpack:///./src/views/triggerAlerts/StatusAlert.vue?3b21","webpack:///./src/views/triggerAlerts/StatusAlert.vue","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/zooming-toolkit.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/zooming.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/buttons.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/dialog.component.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/column.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/row.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/image.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/utils.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-reader.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/zip-archive.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/workbook.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.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/@syncfusion/ej2-grids/src/grid/actions/reorder.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./src/common/dates.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.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/@syncfusion/ej2-charts/src/chart/utils/get-data.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/tab/items.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/tab/tab.component.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/multi-colored-base.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/multi-colored-line-series.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/strip-line.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/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.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/moment/locale/fy.js","webpack:///./src/views/templates/ATGReports/TradingGroupAlertsReportTemplate.vue?02d8","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/check-box/checkbox.component.js","webpack:///./src/views/templates/ATGReports/ATGReportTabs.vue?cfb5","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/data.js","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/trendlines.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/segments.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/series.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/striplines.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/categories.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/multilevellabels.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/axes.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/rows.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/rangecolorsettings.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/annotations.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/selecteddataindexes.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/indicators.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/chart.component.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./src/views/triggerAlerts/DeadlineAlert.vue?9ca8","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/annotation/annotation.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/annotation/annotation.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/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./src/views/templates/ATGReports/TicketsReportTemplate.vue?e79c","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","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/@syncfusion/ej2-charts/src/chart/series/line-series.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/candle-series.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.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/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/button/button.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./src/views/templates/ATGReports/HedgingOverviewReportTemplate.vue?9a77","webpack:///./node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///./src/views/templates/ATGReports/M2MReportTemplate.vue?16c5","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/maskbase/masked-date-time.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./src/views/triggerAlerts/TriggerHitAlert.vue?edb3","webpack:///./src/views/triggerAlerts/TriggerHitAlert.vue?020c","webpack:///src/views/triggerAlerts/TriggerHitAlert.vue","webpack:///./src/views/triggerAlerts/TriggerHitAlert.vue?e3d9","webpack:///./src/views/triggerAlerts/TriggerHitAlert.vue","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./src/views/triggerAlerts/DeadlineAlert.vue?6404","webpack:///src/views/triggerAlerts/DeadlineAlert.vue","webpack:///./src/views/triggerAlerts/DeadlineAlert.vue?b4b9","webpack:///./src/views/triggerAlerts/DeadlineAlert.vue","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/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./src/views/templates/ATGReports/ATGReportTabs.vue?a513","webpack:///./src/views/templates/ATGReports/PositionReportTemplate.vue?b667","webpack:///src/views/templates/ATGReports/PositionReportTemplate.vue","webpack:///./src/views/templates/ATGReports/PositionReportTemplate.vue?fb5b","webpack:///./src/views/templates/ATGReports/PositionReportTemplate.vue","webpack:///./src/views/templates/ATGReports/M2MReportTemplate.vue?1c42","webpack:///src/views/templates/ATGReports/M2MReportTemplate.vue","webpack:///./src/views/templates/ATGReports/M2MReportTemplate.vue?7e12","webpack:///./src/views/templates/ATGReports/M2MReportTemplate.vue","webpack:///./src/views/templates/ATGReports/CostAndPricingReportTemplate.vue?19fb","webpack:///src/views/templates/ATGReports/CostAndPricingReportTemplate.vue","webpack:///./src/views/templates/ATGReports/CostAndPricingReportTemplate.vue?8fa7","webpack:///./src/views/templates/ATGReports/CostAndPricingReportTemplate.vue","webpack:///./src/views/templates/ATGReports/TradingGroupAlertsReportTemplate.vue?2bd2","webpack:///src/views/templates/ATGReports/TradingGroupAlertsReportTemplate.vue","webpack:///./src/views/templates/ATGReports/TradingGroupAlertsReportTemplate.vue?5a83","webpack:///./src/views/templates/ATGReports/TradingGroupAlertsReportTemplate.vue","webpack:///./src/views/templates/ATGReports/TicketsReportTemplate.vue?80af","webpack:///src/views/templates/ATGReports/TicketsReportTemplate.vue","webpack:///./src/views/templates/ATGReports/TicketsReportTemplate.vue?323e","webpack:///./src/views/templates/ATGReports/TicketsReportTemplate.vue","webpack:///./src/views/templates/ATGReports/HedgingOverviewReportTemplate.vue?0e3a","webpack:///src/views/templates/ATGReports/HedgingOverviewReportTemplate.vue","webpack:///./src/views/templates/ATGReports/HedgingOverviewReportTemplate.vue?261f","webpack:///./src/views/templates/ATGReports/HedgingOverviewReportTemplate.vue","webpack:///./src/views/templates/ATGReports/HypotheticalTradeReportTemplate.vue?3f38","webpack:///src/views/templates/ATGReports/HypotheticalTradeReportTemplate.vue","webpack:///./src/views/templates/ATGReports/HypotheticalTradeReportTemplate.vue?02fa","webpack:///./src/views/templates/ATGReports/HypotheticalTradeReportTemplate.vue","webpack:///./src/views/templates/ATGReports/TicketsLogsReportTemplate.vue?cc72","webpack:///src/views/templates/ATGReports/TicketsLogsReportTemplate.vue","webpack:///./src/views/templates/ATGReports/TicketsLogsReportTemplate.vue?77f9","webpack:///./src/views/templates/ATGReports/TicketsLogsReportTemplate.vue","webpack:///./src/views/templates/ATGReports/VolumeReportTemplate.vue?7129","webpack:///src/views/templates/ATGReports/VolumeReportTemplate.vue","webpack:///./src/views/templates/ATGReports/VolumeReportTemplate.vue?a71b","webpack:///./src/views/templates/ATGReports/VolumeReportTemplate.vue","webpack:///src/views/templates/ATGReports/ATGReportTabs.vue","webpack:///./src/views/templates/ATGReports/ATGReportTabs.vue?9c96","webpack:///./src/views/templates/ATGReports/ATGReportTabs.vue","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/stacked-column.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/date-time-axis.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/utils/print.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/base.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.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/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/src/drop-down-button/items.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/src/drop-down-button/dropdownbutton.component.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/uploader/files.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/uploader/uploader.component.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./src/views/templates/ATGReports/CostAndPricingReportTemplate.vue?d415","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./src/views/templates/ATGReports/VolumeReportTemplate.vue?9642","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./src/views/templates/ATGReports/HypotheticalTradeReportTemplate.vue?a3bc","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","__extends","extendStatics","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","target","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","RTL","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","POPUP_CONTAINER","Animation","_super","apply","effect","duration","delay","Tooltip","options","element","_this","call","mouseMoveEvent","mouseMoveTarget","containerElement","isBodyContainer","initialize","formatPosition","_a","_b","position","indexOf","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","createElement","className","tipClass","appendChild","tooltipEle","renderPopup","elePos","mouseTrail","top","left","getTooltipPosition","classList","remove","popupObj","height","width","X","Y","enableRtl","open","openPopupHandler","bind","close","closePopupHandler","getScalingFactor","x","scalingFactors","elementsWithTransform","closest","contains","computedStyle","window","getComputedStyle","transformValue","getPropertyValue","matrixValues","map","parseFloat","style","display","parentWithZoomStyle","zoom","pos","getBoundingClientRect","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","reposition","findTarget","dataBind","needTemplateReposition","trigger","tooltipEventArgs","isReact","opensOn","clearTemplate","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","Math","round","showTipPointer","clientHeight","clientWidth","offsetWidth","offsetHeight","offsetX","offsetY","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","cssClass","getAttribute","setAttribute","removeAttribute","content","innerHTML","HTMLElement","enableHtmlSanitizer","setProperties","sanitize","enableHtmlParse","tempFunction","tempArr","id","undefined","root","templateFunction","renderReactTemplates","renderCloseIcon","isSticky","tipClose","add","touchStartEvent","onStickyClose","existingCloseIcon","querySelector","addDescribedBy","describedby","push","join","trim","removeDescribedBy","index","splice","orgdescribedby","tapHoldHandler","evt","clearTimeout","autoCloseTimer","targetHover","originalEvent","touchEndHandler","e","setTimeout","targetClick","hideTooltip","animation","closeDelay","targetList","slice","ctrlId","document","_i","targetList_1","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showAnimation","showTimer","hideTimer","openDelay","type","cancel","event","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","attrs","role","styles","tooltipBeforeRender","tooltipAfterRender","stop","appendContainer","ctrlObj","container","body","tagName","isDevice","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","timingFunction","show","onMouseMove","wireMouseEvents","tooltip","viewContainerRef","checkCollision","horizontal","vertical","affectedPos","checkCollideTarget","offsetLeft","pageXOffset","scrollLeft","offsetTop","pageYOffset","scrollTop","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","toString","positionString","newPos","offsetType","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","destroy","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","preventDefault","touches","pageX","pageY","colpos","keyDown","keyCode","touchEnd","scrollHandler","render","wireEvents","renderComplete","preRender","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHoldThreshold","tapHold","touchEndEvent","targetsList","targetList_2","unwireEvents","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","getModuleName","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","keys","prop","refresh","target_2","currentTarget","currentTarget_1","DATEWRAPPER","LIBRARY","CONTROL","POPUPWRAPPER","INPUTWRAPPER","POPUP","INPUTCONTAINER","INPUTFOCUS","INPUTROOT","ERROR","ACTIVE","OVERFLOW","DATEICON","ICONS","OPENDURATION","OFFSETVALUE","SELECTED","FOCUSEDDATE","NONEDIT","containerAttr","DatePicker","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isAngular","preventChange","isIconClicked","isDynamicValueChanged","moduleName","isFocused","isBlur","isKeyAction","datepickerOptions","bindEvents","floatLabelType","calculateWidth","inputElement","inputWrapper","buttons","getElementsByClassName","disabled","enabled","setTimeZone","serverTimezoneOffset","offsetValue","value","clientTimeZoneDiff","Date","getTimezoneOffset","serverTimezoneDiff","timeZoneDiff","isDayLightSaving","getTime","updateInput","firstOffset","getFullYear","secondOffset","max","setAllowEdit","allowEdit","readonly","updateIconState","checkInvalidValue","enableMask","notify","module","createInput","updateHtmlAttributeToWrapper","placeholder","updateInputValue","previousElementValue","previousDate","inputValueCopy","ariaAttrs","l10nLocale","globalize","locale","l10n","getConstant","fullScreenMode","updatedCssClassValues","replace","isBindClearAction","bindClearAction","properties","showClearButton","setWidth","tabIndex","addAttributes","isDynamic","formatOptions","isCalendar","disabledDates","isNaN","checkValue","strictMode","validateDate","minMaxUpdates","minMaxUpdate","dateValue","dateString","tempFormat","formatString","dateTimeFormat","calendarMode","formatDate","format","skeleton","min","changedArgs","errorClass","checkStringValue","val","returnDate","formatDateTime","culture","getDatePattern","checkDateValue","parseDate","valueDate","valueString","invalid","extISOString","basicISOString","test","bindInputEvent","inputHandler","dateIconHandler","mouseUpHandler","inputFocusHandler","inputBlurHandler","keyupHandler","keydownHandler","inputChangeHandler","clearButton","resetHandler","formElement","resetFormHandler","defaultKeyConfigs","keyConfigs","keyboardModules","eventName","keyAction","inputKeyActionHandle","code","unBindEvents","restoreValue","currentDate","stopPropagation","bindClearEvent","clearedArgs","popupUpdate","changeEvent","keyupEvent","createEvent","initEvent","dispatchEvent","preventEventBubbling","interopAdaptor","invokeMethodAsync","setValue","blur","focus","htmlAttributes","updatedClassValues","setStyle","charAt","updateHtmlAttributeToElement","updateCssClass","newCssClass","oldCssClass","setCssClass","popupWrapper","calendarKeyActionHandle","action","children","selectionStart","selectionEnd","focusArguments","model","openOnFocus","isPopupClicked","strictModeUpdate","changeTrigger","activeElement","blurArguments","calendarKeyboardModules","calendarElement","firstElementChild","documentHandler","parentElement","depth","toLowerCase","generateTodayVal","focusOut","clickedView","currentView","start","end","length_1","headerTitleElement","defaultAction","keyActionHandle","setActiveDescendant","previousDateTime","querySelectorAll","targetdate","navigateTo","dateOptions","date","pattern","charPattern","len","modifiedValue","toLocaleUpperCase","setFullYear","setHours","getHours","getMinutes","getSeconds","getMilliseconds","createCalendar","modelHeader","modal","relateTo","targetType","zIndex","collision","iconRight","marginRight","swipe","CalendarSwipeHandler","TouchStartHandler","resetCalendar","preventArgs","setAriaAttributes","targetExitViewport","direction","swipeDirection","touchStart","navigateNext","navigatePrevious","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","textContent","modelCloseIcon","modelCloseHandler","modelTodayButton","insertBefore","valueOf","navigatedEvent","navigatedArgs","selectCalendar","requiredModules","modules","args","member","prevent_1","outOfRange","mobilePopupWrapper","popup","appendTo","eventArgs","refreshPosition","openAnimation","setOverlayIndex","tableBodyElement","dlgOverlay","prevent_2","closeEventCallback","prevent","keyboardModule","outerHTML","focusIn","triggerEvent","view","removeAttributes","inputElementCopy","ensureInputAttribute","ngTag","insertAdjacentElement","attributes","cloneNode","validationAttribute","getDefaultKeyConfig","checkHtmlAttributes","hasAttribute","altUpArrow","altDownArrow","escape","enter","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","select","home","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","shiftTab","tab","nameAttribute","attribute","attr","checkFormat","skeletonString","dynamic","checkView","attributes_1","valueCopy","previousValCopy","renderDayCell","inputVal","dateIdString","isDisabledDate","setMilliseconds","setPlaceholder","setReadonly","setEnabled","setLocale","setEnableRtl","setClearButton","removeFloating","addFloating","day","month","year","second","dayOfTheWeek","monthsShortDot","monthsParse","monthsRegex","esDo","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdaysParseExact","hours","w","ww","DataLabelSettings","color","right","bottom","size","fontStyle","fontWeight","fontFamily","MarkerSettings","ParetoOptions","Points","symbolLocations","regions","percentage","regionData","isSelect","marker","visible","isPointInRange","verticalError","verticalNegativeError","horizontalError","horizontalNegativeError","verticalPositiveError","horizontalPositiveError","Trendline","clipRect","setDataSource","series","chart","points","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","rangeColorPoints","isAdvancedColor","currentViewData","seriesType","isRectTypeSeries","processJsonData","point","xName","Series","textMappingName","dataLabel","processInternalData","category","paretoSeriesModule","performCumulativeCalculation","xMin","xMax","yMin","yMax","sizeMax","getSeriesType","xAxis","valueType","dataPoint","pushCategoryData","pushData","setEmptyPoint","rangeColorsInterior","option","dateParser","intl","getDateParser","dateFormatter","getDateFormat","parse","parseJson","xValue","isBlazor","stockChart","drawType","chartAreaType","isArea","isRange","findSplinePoint","maximum","minimum","calculateBinValues","histogramValues","binWidth","rangeColorSettings","visibleSeries","interior","yValue","xData","getObjectValueByMappingString","enableComplexProperty","getObjectValue","high","low","volume","pointColorMapping","errorBar","errorBarColor","errorBarColorMapping","yName","text","tooltipMappingName","isAdvancedColorSupported","rangeColorName","colorName","colorValue","getPointFillColor","pointFill","rangeMap","colors","mappingName","data","findVisibility","isEmpty","mode","emptyPointSettings","yData","getAverage","yValues","yAxisMin","yAxis","yAxisMax","setXYMinMax","setHiloMinMax","filter","sort","a","seriesMinY","isLogAxis","isNegativeValue","rangePadding","pointX","shared","isIndexed","labels","indexLabels","previous","next","refreshDataManager","dataSource","query","dataManager","dataModule","getData","generateQuery","requiresCount","then","dataManagerSuccess","count","isRemoteData","allowServerDataBinding","localData","argsData","fill","findCurrentData","recordsCount","refreshChart","refreshTechnicalIndicator","trendlines","trendline","refreshBound","initialRender","stockChartDataManagerSuccess","parent","propName","defaultValue","isArray","isRectSeries","drawPoints","lowDrawPoints","delayedAnimation","refreshAxisLabel","item","_c","findSeriesCollection","column","row","isStack","seriesCollection","axes","rowAxis","rowSeries","_d","_e","axis","_f","_g","rectSeriesInChart","calculateStackedValue","isStacking100","columns","columnItem","rows","calculateStackingValues","startValues","endValues","stackingGroup","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","groupingValues","visiblePoints","k","stackingSeies","stackedValues","seriesCollection_2","seriesCollection_1","j","pointsLength","toFixed","abs","isColumnBarType","startFromZero","findPercentageOfStacking","values","stackingSeies_1","seriesCollection_3","isStack100","renderSeries","createSeriesElements","requireInvertedAxis","errorBarModule","dataLabelModule","appendSeriesElement","seriesElements","enableCanvas","performAnimation","elementId","explodeValue","border","svgRenderer","renderer","markerHeight","markerWidth","markerMaxValue","radius","clipRectElement","redraw","columnIndex","rowIndex","transform","symbolElement","seriesElement","createGroup","checkTabindex","errorBarElement","textElement","dataLabelElements","shapeElement","hasChildNodes","enable","animateSeries","isStockChartRendered","doAnimation","doErrorBarAnimation","markerRender","doMarkerAnimation","info","isIE","doDataLabelAnimation","setPointColor","setBorderColor","arMa","processRelativeTime","gomLatn","standalone","isFormat","frCh","enAu","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","tr","minutes","StackingLineSeries","isInverted","pointIndex","nextPointIndex","point1","point2","polarType","getCoordinate","visiblePts","stackedvalue","concat","opacity","dashArray","appendLinePath","renderMarker","doLinearAnimation","da","tlPh","ChartAnnotationSettings","LabelBorder","MultiLevelCategories","StripLineSettings","MultiLevelLabels","ScrollbarSettingsRange","ScrollbarSettings","eu","th","NiceInterval","calculateDateTimeNiceInterval","isChart","interval","oneDay","startDate","endDate","totalDays","actualIntervalType","intervalType","calculateNumericNiceInterval","getSkeleton","currentValue","previousValue","isIntervalInDecimal","findCustomFormats","labelFormat","translator","words","correctGrammaticalCase","wordKey","word","srCyrl","lastWeekDays","LineBase","chartModule","tempPoint","tempPoints","tempPoints2","xVisibleRange","visibleRange","yVisibleRange","seriesPoints","areaBounds","xTolerance","delta","yTolerance","prevXValue","prevYValue","xVal","yVal","seriesPoints_1","currentPoint","getLineDirection","firstPoint","secondPoint","getPointLocation","startPoint","previousDirection","htmlObject","drawPath","Int32Array","pathElement","doProgressiveAnimation","currentTime","path","strokeDashArray","pathLength","getTotalLength","visibility","animate","progress","timeStamp","storePointLocation","getLocation","withinYRange","GetStepLineDirection","previousPoint","stepLineType","command","centerX","getFirstLastVisiblePoint","first","last","points_1","getBorderDirection","coordinates","stackingAreaSeriesModule","stackingStepAreaSeriesModule","removeEmptyPointsBorder","borderDirection","startIndex","childNodes","animated","elementHeight","elementWidth","xCenter","yCenter","ocLnc","mt","StackingColumnSeries","sideBySideInfo","getSideBySideInfo","stackedValue","visiblePoints_1","rect","getRectangle","columnWidthInPixel","rectCount","drawRectangle","updateSymbolLocation","columnFacet","cylinderSeriesOption","drawCylinder","symbolMap","0","pluralForm","plurals","pluralize","u","string","f","str","arLy","preparse","postformat","commonXvalues","addEventListener","isDestroyed","cancelEvent","isPointer","on","mouseLeaveHandler","longPress","touchMoveEvent","mouseMoveHandler","control","lierIndex","isTouch","isSelected","mouseX","mouseY","chartAxisLayoutPanel","seriesClipRect","crosshair","startMove","fadeOutMode","removeTooltip","fadeOutDuration","findData","previousPoints","scaleX","scaleY","onPanning","disableTrackTooltip","markerMove","svgElement","getElement","isStockSvg","firstChild","isTooltip","tooltipDiv","getTooltipElement","getElementById","renderGroupedTooltip","renderSeriesTooltip","findHeader","header","parseTemplate","findShapes","enableMarker","currentPoints","shape","isFirst","dataEditingModule","isPointDragging","triggerTooltipRender","getTooltipText","isRemove","mergeXvalues","getClosestX","findMouseValue","textCollection","headerText","tooltipTemplate","template","textStyle","pointY","seriesIndex","seriesName","pointText","borderWidth","padding","chartTooltipSuccess","removeHighlight","removeText","formattedText","location_1","getSymbolLocation","location","createTooltip","findMarkerHeight","availableSize","getTemplateText","pointData","getBoxLocation","getWaterfallRegion","getRangeArea","inverted","getFormat","formatPointValue","valueY","valueX","lastData","dataCollection","stopAnimation","pointXValue","pointYValue","tempData","extraPoints","closestXValue","Number","MAX_VALUE","closetYValue","argument","enableTooltip","commonXValue","showNearestPoint","collection","dataCollection_1","data_1","triggerSharedTooltip","toolbarHeight","titleHeight","enablePeriodSelector","title","titleStyle","themeStyle","tooltipLabelFont","sharedTooltip","location_2","findSharedLocation","outliers","textValue","dataValue","RegExp","source","getPrototypeOf","isXPoint","isYPoint","customLabelFormat","getNumberFormat","useGrouping","useGroupingSeparator","tooltipFormat","getIndicatorTooltipFormat","textX","toolTip","removeHighlightedMarker","fadeOut","data_2","num","forms","relativeTimeWithPlural","be","ka","$0","$1","$2","ForeignKey","serviceLocator","initForeignKeyColumns","getForeignKeyData","generateQueryFormData","eventfPromise","state","getStateEventArgument","def","deff","getDataModule","requestType","foreignKeyDataState","isDataChanged","setForeignKeyDataState","isPending","resolver","resolve","promise","setColumnData","setForeignKeyData","foreignColumns","getForeignKeyColumns","allPromise","_loop_1","isComplex","this_1","genarateColumnQuery","genarateQuery","params","ready","offline","executeQuery","Promise","all","responses","columnData","editType","edit","fields","foreignKeyField","field","foreignKeyValue","catch","log","reject","predicate","fromData","needQuery","gObj","predicates","allowPaging","enableVirtualization","allowGrouping","groupSettings","records","executeLocal","filteredValue","distinct","getDay","operator","matchCase","where","or","queryColumn","isFiltered","isTrue","filterQuery","searchSettings","sSettings","adaptor","searchQuery","search","ignoreCase","filterColumn","filterSettings","fColumn","uid","destroyEvent","off","modelProps","testProp","props","watch","emitProbs","modelProps_1","props_1","TextBoxComponent","mixins","emits","provide","custom","ej2Instances","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","isVue3","templateCollection","created","_trigger","bindProperties","_setProperties","updated","slots","$slots","default","methods","templateNames","templateNames_1","tempName","elementCollection","elementCollection_1","ele","__vue__","$destroy","muteOnChange","referModels","vueInstance","$emit","eventProp","successHandler","propKey","$props","isLazyUpdate","addIcon","icons","TextBoxPlugin","install","Vue","component","ScatterSeries","startLocation","scatterBorder","isLineShapeMarker","currentTempPoint","circlePath","previousPath","imageURL","imageUrl","shapeOption","rectElements","ko","token","isUpper","numberMap","ku","bs","DatePickerComponent","addDate","dates","createContent","removeDate","DatePickerPlugin","units","translateSeconds","translateSingular","special","lt","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","Uint8Array","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","floor","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","Uint16Array","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","get","enumerable","configurable","compressedString","String","fromCharCode","write","Error","encode","getBytes","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","set","subarray","updateHash","hash","curMatch","chainLen","niceLen","scan","bestEnd","bestLength","limit","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","distance","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","uint","Uint32Array","pendingBufferFlushBits","isClose","array","bitReverse","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","codes","lengths","temp","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","leafsCount","nodesCount","child","node","iIndex","constructHuffmanTree","buildLength","lastVal","minDepth","numNodes","numLeafs","overflow","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","vi","me","CustomWebApiAdaptor","_WebApiAdaptor","_classCallCheck","_callSuper","_inherits","_createClass","dm","xhttp","p3","originalFail","onFailure","err","status","authToken","logger","apis","unprotectedApi","put","Token","resp","rules","getPermissions","checkUIPermissions","navigateToLogin","pathname","_superPropGet","WebApiAdaptor","SyncHelper","getDataManager","relativePath","queryString","DataManager","url","urls","apiBaseUrl","crossDomain","headers","Authorization","af","Data","dataState","group","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","json","toIndex","fromIndex","isQueryInvokedFromData","isVue","skipPage","isAutoCompleteCall","getQuery","clone","columnQueryMode","getColumns","isPrimaryKey","selectQueryFields","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","groupQuery","aggregates","cols","types","aggregate","fName","queries","enableInfiniteScrolling","pageSettings","currentPage","pageCount","pageSize","infiniteScrollModule","page","pagerModule","pagerObj","isAllPage","isManualRefresh","enableLazyLoading","lazyLoad","getColumnByField","columnName","isGrpFmt","enableGroupByFormat","formatGroupColumn","allowSorting","sortSettings","sortGrp","col","setSortDirection","fn","sortComparer","isRemote","isForeignColumn","sortByForeignKey","sortBy","getSortDirection","fcolumn","isForeignKey","getSearchColumnFieldNames","predicateList","needForeignKeySearch","some","fGeneratePredicate","ignoreAccent","predList","skipFoerign","foreignColEmpty","actualFilter","foreignColumn","allowFiltering","colType","foreignCols","defaultFltrCols","columns_1","gridColumn","getColumnByUid","grabColumnByFieldFromAllCols","excelPredicate","getPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","and","fPredicate","getKey","foreignKeyData","getPrimaryKeyFieldNames","eventPromise","crud","fromTable","changes","addedRecords","deletedRecords","changedRecords","saveChanges","insert","deferred_1","getFormatter","formatVal","toView","pr","update","previousData","original","endEdit","setState","getState","getForeignKeyDataState","adaptr","processQuery","JSON","pvtData","dataArgs","disablePageWiseAggregates","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","uz","OTHERMONTH","OTHERDECADE","HEADER","CONTENTTABLE","YEAR","MONTH","DECADE","PREVICON","NEXTICON","PREVSPAN","NEXTSPAN","ICONCONTAINER","DISABLED","OVERLAY","WEEKEND","WEEKNUMBER","FOCUSEDCELL","OTHERMONTHROW","TODAY","TITLE","LINK","CELL","WEEKHEADER","ZOOMIN","FOOTER","BTN","FLAT","CSS","PRIMARY","DAYHEADERLONG","dayMilliSeconds","minutesMilliSeconds","CalendarBase","isDateSelected","isTodayClicked","previousDates","rangeValidation","calendarEleCopy","setSeconds","firstDayOfWeek","getFirstDayOfWeek","todayDisabled","todayDate","createHeader","spacebar","altRightArrow","altLeftArrow","popupElement","ariaPrevAttrs","ariaNextAttrs","ariaTitleAttrs","tabIndexAttr","headerElement","iconContainer","previousIcon","selector","isCenterRipple","nextIcon","adjustLongHeaderSize","contentElement","table","createContentHeader","createContentBody","showTodayButton","createContentFooter","addContentFocus","removeContentFocus","focusedDate","selectedDate","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","obj","toCapitalize","toUpperCase","daysCount","html","tableHeadElement","weekNumber","shortNames","shiftArray","days","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","today","footer","todayButtonClick","ref","keyConfig","navigateTitle","dateWireEvents","serverModuleName","isCustomDate","getViewNumber","renderDayCellArgs","multiSelection","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","firstDay","addMonths","addYears","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigateNextHandler","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","cellsCount","getDate","timezone","currentMonth","getMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isDisabled","isOutOfRange","renderDayCellEvent","argsDate","localDateString","tempDateString","otherMnthBool","disabledCls","clickHandler","getDateVal","tempValue","innerText","copyValues","type_1","formatOptions_1","localDateString_1","tempDateString_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","setMonth","setDate","localMonth","yearCell","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","lastDate","timeOffset","findLastDay","elements","classNm","trEle","weekNumCell","numberCell","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","eve","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","toGregorian","switchView","keyEntity","validateValues","skipIndex","tempValueString","minFormatOption","minStringValue","minString","maxFormatOption","maxStringValue","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","focusedEle","selectedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","islamicPrevious","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","ceil","time","tzOffset","tzOffsetDiff","setTime","getMaxDays","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","checkPrevious","compare","modifier","findNextTD","rangeValue","tmpDate","inValue","toUTCString","toLocaleString","timeZone","Calendar","isMultiSelection","tempValues","copyDate","previousValues","setEnable","setClass","form","formResetHandler","setMinutes","changeHandler","triggerChange","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","tempDates","setTodayDate","NaN","axisPadding","CartesianAxisLayoutPanel","measureAxis","chartAreaWidth","chartArea","crossAt","initialClipRect","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","delayRedraw","calculateAxisSize","calculateFixedChartArea","refreshAxis","margin","legendSettings","legendModule","legendBounds","farSizes","calculateRowSize","nearSizes","insideNearSizes","insideFarSizes","arrangeAxis","measureDefinition","computedHeight","calculateColumnSize","computedWidth","definition","scrollbarSettings","scrollBarHeight","scrollBarModule","zoomModule","zoomSettings","enableScrollbar","enableScrollbarOnZooming","isZoomed","zoomFactor","zoomPosition","getModule","baseModule","calculateRangeAndInterval","computeSize","axisOffset","nearCount","farCount","len_1","plotOffset","len_2","span","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","isAxisOpposedPosition","labelPosition","orientation","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","measure","actualIndex","axisCollections","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","isRTLEnabled","setIsInversedAndOpposedPosition","position1","position2","rangeOffset","crossesAt","crossesInAxis","crossInAxis","updateCrossAt","primaryXAxis","primaryYAxis","logBase","axisCollection","actualLength","rowTop","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","isInside","axisElement","axisLineElement","axisVisibility","yAxisName","xAxisName","paretoOptions","showAxis","findAxisPosition","updateCrossValue","internalVisibility","lineStyle","drawAxisLine","updatedRect","majorGridLines","majorTickLines","minorTickLines","minorGridLines","drawXAxisGridLine","tickPosition","drawXAxisLabels","placeNextToAxisLine","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","svgObject","zoomingScrollBar","isScrollUI","scrollElement","isRow","x1","x2","y1","y2","definitionName","optionsLine","drawLine","plotX","plotY","plotBottom","plotTop","plotLeft","plotRight","axisLine","tempInterval","minorGridDirection","isCategoryAxis","majorGrid","majorTick","isOpposed","tickSize","axisLineSize","ticksbwtLabel","labelPlacement","isTickInside","ticks","visibleLabels","chartThemeStyle","isBorder","renderGridLine","majorGridLine","majorTickLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","minorGridLine","minorTickLine","endIndex","label","elementSize","isAxisBreakLabel","RotatedWidth","labelSpace","labelPadding","isLabelInside","tickSpace","angle","isVerticalAngle","textHeight","textPadding","maxLineWidth","intervalLength","labelHeight","yAxisLabelX","labelElement","pixel","isInverse","isAxisInverse","previousEnd","isLabelOnAxisLineLeft","sizeWidth","breakLabelSizeWidth","breakLabelSize","LabelMaxWidth","breakLabelMaxWidth","cos","PI","originalText","labelIntersectAction","isInversed","opposedPosition","labelStyle","textAlignment","edgeLabelPlacement","previousYValue","currentYValue","axisLabelFont","createZoomingLabel","getAxisLabelXvalue","textWidth","anchor","lineBreakAlignment","startY","gap","dateTimeInterval","endY","maxLabelSize","labelBorder","endX","createAxisBorderElement","multiLevelLabels","multiLevelLabelModule","renderYAxisMultiLevelLabels","isRotated","labelRotation","titleRotation","titlePadding","multiLevelLabelHeight","titleSize","titleCollection","axisTitleFont","minorDirection","labelIndex","isFirstLabel","logStart","logEnd","coor","range","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","pow","findLogNumeric","labelWidth","isLeft","islabelInside","isHorizontalAngle","newPoints","isRotatedLabelIntersect","textPoints","rotatedLabelSize","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","getAnchor","isRtlEnabled","i_1","breakLabelWidth","getLabelText","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","index_1","rotateAngle","textRect","textRectCoordinates","rectPoints","newRect","interSectPoint","calculateIntersection","rectPoint1","rectPoint2","trimValue","sqrt","p1","p2","p4","c2x","c3x","c2y","c3y","u1","u4","px","py","point3","point4","findAxisLabel","axisRect","startX","length_2","renderXAxisMultiLevelLabels","borderElement","pointerEvents","enableTrim","gridDirection","gridModel","gridId","gridIndex","themeColor","findParentNode","parentNode","zoomElement","replaceChild","MarkerExplode","removeEventListener","highlightMode","explodeSeries","chartSeries","tooltipModule","isPointMouseDown","markerExplode","allowHighlight","drawTrackBall","animationDuration","maxPointCount","svg","seriesMarker","highlightModule","generateStyle","selectionModule","selectionMode","symbolId","borderColor","markerShadow","g","markerElement","trackElement","createSvg","cssText","symbol","selectionId","seletionElem","endAnimate","trackballAnimate","delays","durations","isLabel","centerY","clipX","clipY","point_1","trackballElements","markerShapes","Marker","previousLocation","isBoxPlot","isFilled","markerFill","markerBorder","markerOpacity","markerShape","markerClipRect","getRangeLowPoint","region","markerElements","incFactor","lowPoint","TechnicalIndicator","targetSeries","RangeColorSetting","CrosshairSettings","ZoomSettings","Chart","rotatedDataLabelCollections","isScrolling","checkResize","clickCount","singleClickTimer","isCrosshair","chartid","isLegendClicked","previousTargetId","currentPointIndex","currentSeriesIndex","currentLegendIndex","previousPageX","previousPageY","allowPan","mergePersistChartData","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","isIdHasSpecialCharacter","regex","numberRegex","childElementId","blazor","markerIndex","unWireEvents","initPrivateVariable","setCulture","dragY","refreshDefinition","description","elementid","svgId","loadEventData","theme","cartesianChartRendering","applyZoomkit","beforeRenderData","setTheme","createChartSvg","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","processData","getLocalizedLabel","localeObject","getLegendOptions","calculateStackValues","calculateBounds","rangeFound","enableSelector","renderElements","removeSelection","isCalculateStacking","filterArray","calculateDragSelectedElements","renderBorder","renderTitle","renderAreaBorder","renderSeriesElements","renderLegend","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","legendCollections","calTotalPage","bounds","canvasClip","canvasRestore","chartObject","mainObject","svgRect","initializeModuleElements","dataLabelCollections","indicators","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","indicator","createIndicatorElements","getTrendLineElements","childElementCount","calculateStockEvents","enablePan","performedUI","showToolbar","applyZoomToolkit","annotationModule","renderAnnotations","selectedDataIndexes","invokeSelection","invokeHighlight","redrawSelection","check","prevPointCount","initializeDataModule","techIndicator","subTitleHeight","elementSpacing","subTitleCollection","chartTitleFont","subTitle","subTitleStyle","chartSubTitleFont","marginTotal","stockLegendModule","calculateLegendBounds","print","exportChart","trendIndex","trendLine","initSeriesCollection","isTransposed","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","targetIndicator","palettes","zOrder","isSecondaryAxis","initSeries","positionY","positionX","rotation","alignment","subtitleSize","borderOptions","cornerRadius","background","renderSubTitle","titleWidth","titleText","subTitleElementSize","reduce","subTitleOptions","backGroundImage","backgroundImage","fillColor","image","drawImage","previousRect","areaBorder","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","desiredIntervals","removeAxis","highlightElement","removeSvg","startEvent","moveEvent","stopEvent","chartOnMouseDown","mouseMove","mouseEnd","chartOnMouseClick","chartOnDoubleClick","chartRightClick","mouseLeave","chartKeyDown","documentKeyHandler","chartKeyUp","resizeBound","touchObject","chartResize","longPressBound","crosshairModule","which","pointerType","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","touchAction","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","isOrientation","changedTouches","setMouseXY","export","fileName","exportModule","afterExport","getDataUrl","arg","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","resizeTo","touchArg","clientX","clientY","chartOnMouseMove","chartOnMouseLeave","isChartDrag","actionKey","removeLegendHighlightStyles","ctrlKey","enableDeferredZooming","enableMouseWheelZooming","chartKeyboardNavigations","groupElement","markerGroup","targetId","titleElement","legendElement","pagingElement","previousElement","setTabIndex","focusChild","legendElement_1","getActualIndex","currentLegend","seriesIndexes","currentElement","totalLength","altKey","pointRegion","highlightChart","completeSelection","legendID","legendItemsId","legendSelection","click","calculateSelectedElements","toolkit","zoomInOutCalculation","performZoomRedraw","yArrowPadding","xArrowPadding","doPan","timeInterval","pointDoubleClick","observers","pointClick","triggerPointEvent","axisLabelClick","triggerAxisLabelClickEvent","clickEvt","axisIndex","currentAxis","labelID","pointMove","titleTooltip","axisTooltip","pointMouseMove","isTitleOrLegendEnabled","texts","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","threshold","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","setAnnotationValue","annotationIndex","annotation","annotations","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","tabColor","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","dragSettings","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableHighlight","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","striplines","striplines_1","stripline","clearRect","removeLength","pinchTarget","containerCollection","removeChild","definitions","definitions_1","axisChange","getVisibleSeries","visibleSeries_1","refreshLiveData","removeStyles","mousemove","initMouseEvent","isPoint","showCrosshair","hideCrosshair","removeCrosshair","refreshBounds","crosshairTooltip","textOverflow","seriesRefresh","blazorProp","isClosed","boxPlotMode","showMean","binInterval","currentMode","styleId","highlightDataIndexes","highlightSearch","ignoreRegex","replaceQuery","findTextNode","nodeType","nodeValue","revertHighlightSearch","parent_1","createTextNode","icon","AutoComplete","_this_1","searchList","getLocaleName","getNgDirective","filterType","dataType","typeOfData","typeof","virtualGroupDataSource","mapping","suggestionCount","queryElements","take","takeValue","getTakeValue","skip","virtualItemStartIndex","searchLists","isTyped","isDataFetched","isSelectCustom","checkAndResetCache","list","renderList","filterInput","beforePopupOpen","resetList","activeIndex","preventDefaultAction","updateData","filterAction","isNoDataElement","minLength","isFiltering","isPreventScrollAction","previousStartIndex","virtualListInfo","getTransformValues","virualElement","GetVirtualTrackHeight","totalItemCount","getFilteringSkeletonCount","hidePopup","clearAll","property","onActionComplete","ulElement","isUpdated","fixedHeaderElement","li","postBackAction","autofill","liCollections","items","listData","searchItem","setAutoFill","setSelection","isValidLI","getFormattedValue","getIndexByValue","setHoverList","selectedLI","setScrollPosition","isPopupOpen","preventAutoFill","isKeyNavigate","listOption","fieldsSettings","itemCreated","highlight","itemTemplate","isHtmlElement","charCodeAt","itemCreated_1","isEditTextBox","isPopupButton","showPopupButton","isSelectFocusItem","setInputValue","oldValue","typedString","allowCustom","setOldText","setOldValue","checkFields_1_1","listLength_1","getItems","_this_2","addItem","updateValues","showPopup","refreshPopup","viewPortInfo","previousEndIndex","setUpdateInitial","button","appendSpan","dropDownClick","atcProps","getPropObject","newProperty","oldProperty","renderHightSearch","isHighlight","iconCss","groupBy","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","frozenContent","frozenHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","frozenLeft","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","tbody","colGroup","change","beforeOpen","initialFrozenColumnIndex","enCa","enGb","LABEL","RIPPLE","WRAPPER","ATTRIBUTES","RadioButton","RadioButton_1","checked","updateChange","instance","radioGrp","getRadioGroup","angularValue","radioWrap","wrapper","forEach","refreshing","focusHandler","focusOutHandler","getLabel","getSelectedValue","getWrapper","nextElementSibling","initialCheckedValue","initWrapper","updateHtmlAttribute","setDisabled","rippleSpan","for","setText","keyUpHandler","labelMouseDownHandler","labelMouseLeaveHandler","rippleElem","labelMouseUpHandler","wrap","formControlName","textLabel","rippleLabel","getElementsByTagName","relativeTimeMr","mr","Row","innerPadding","findTickSize","findLabelSize","Column","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","intervalDivs","crossAxis","diff","isHorizontal","legendLabelFont","labelSize","findDifference","calculateVisibleRangeOnZooming","baseRange","actualRange","doubleRange","triggerRangeRender","getRangePadding","getMaxLabelWidth","isAxisLabelBreak","isIntersect","rotatedLabel","width1","findMultiRows","result1","height_1","getMultilevelLabelsHeight","currentX","currentLabel","isBreakLabels","width2","isMultiRows","store","isPolar","VisibleLabels","ne","zhMo","hm","12","13","40","tg","disableHtmlEncode","allowResizing","allowReordering","showColumnMenu","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","valueFormatter","setFormatter","getFormatFunction","setParser","getParserFunction","toJSON","commands","textAlign","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","ddEditedData","a_1","xObj","yObj","z","fnDescending","fnAscending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","Scroll","oneTimeReady","widthService","uiupdate","setWidthToColumns","toolbarModule","toolbar","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","enableAdaptiveUI","refreshOverflow","setHeight","mHdrHeight","getContent","enableColumnVirtualization","isFrozenGrid","getScrollBarWidth","frozenRows","getHeaderContent","getRowHeight","isInitialLoad","loadingIndicator","indicatorType","ensureOverflow","setPadding","scrollWidth","getThreshold","cssProps","getCssProperties","removePadding","rtl","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","setScrollLeft","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","userAgent","contentScrollHandler","headerScrollHandler","onContentScroll","scrollTarget","isHeader","isPreventScrollEvent","errorFreeze","errorFixed","getVisibleFrozenLeftCount","widthVal","getVisibleFrozenRightCount","isEdit","isDown","scrollDown","isFooter","cont","hdr","isFrozen","pageXY","getPointXY","mHdr","mCont","scrollBar","getScrollbleParent","scrollingElement","overflowY","defaultView","scrollHeight","addStickyListener","isAdd","eventElement","makeStickyHeader","resizeFrozenRowBorder","div","frzCols","enableStickyHeader","sLeft","sHeight","getContentTable","setLastRowCell","css","contentRect","getClientRects","headerEle","toolbarEle","groupHeaderEle","parentTop","top_1","colMenuEle","elemTop","showDropArea","setSticky","ccDlg","topStyle","gridElement","cs","SummaryModelGenerator","footerTemplate","groupFooterTemplate","groupCaptionTemplate","columnSelector","detailTemplate","childGrid","isRowDragable","generateRows","buildSummaryData","getGeneratedRow","level","parentUid","summaryRow","raw","tmp","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","class","cells","isAggregateRow","cell","isDataCell","cellType","indent","sColumn","scolumn","opt","dummy","summaryRows","single","setTemplate","helper","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","prev","cur","CaptionSummary","ta","kn","_vm","_h","$createElement","_self","staticClass","staticStyle","commandClick","wrapSettings","gridQuery","toolbarClick","excelExportComplete","editSettings","actionComplete","actionBegin","actionFailure","filterOptions","customiseCell","percentageRules","numericParams","dateColumns","requiredRules","tradebalePeriodParams","tradebalePeriods","percentageParams","referenceTypeParams","referenceTypes","checkboxParams","multilineParams","alertDlgButtons","animationSettings","showCloseIcon","dialogOpen","dialogClose","alertWidth","draggable","_v","_s","alertType","triggerDate","alertText","client","country","pricingAreaName","utility","product","company","contractName","contractId","watchPeriod","triggerPrice","contractUnits","marketPrice","textRender","staticRenderFns","Toolkit","iconRectOverFill","iconRectSelectionFill","zoomCompleteEvtCollection","createPanButton","childElement","toolkitSelectionColor","toolkitFill","elementOpacity","panElements","toolkitIconRect","pan","createZoomButton","rectColor","toolkitIconRectSelectionFill","zoomElements","selectedID","createZoomInButton","polygonDirection","drawPolygon","zoomInElements","enableZoomButton","zoomIn","createZoomOutButton","zoomOutElements","zoomOut","createResetButton","process","icon2","icon3","hoveredID","toolkitIconRectOverFill","iconColor","zoomingEventArgs","toolkitElements","zoomedAxisCollection","previousZoomFactor","previousZoomPosition","currentZoomFactor","currentZoomPosition","previousVisibleRange","currentVisibleRange","axisName","axisRange","setDefferedZoom","touchMoveList","touchStartList","applySelection","scale","cumulative","zoomingEventArgs_1","zoomCancel","browserName","wheelEvent","zoomingRect","zoomAxes","zoomkitOpacity","isIOS","isIos","isIos7","renderZooming","calculateZoomAxesRange","drawZoomingRectangle","endLocation","selectionRectFill","selectionRectStroke","xDifference","yDifference","currentScale","performDefferedZoom","redrawOnZooming","translateX","translateY","setTransform","doZoom","layout","zoomRect","zoomedAxisCollections","onZoomingEventArg","isRedraw","isMouseUp","zoomCompleteCollection","performMouseWheelZooming","origin","onZoomingEventArgs","performPinchZooming","elementOffset","touchDown","touchMove","touch0StartX","touch0StartY","touch0EndX","touch0EndY","touch1StartX","touch1StartY","touch1EndX","touch1EndY","pinchRect","translateXValue","translateYValue","calculatePinchZoomFactor","selectionMin","selectionMax","rangeMin","rangeMax","axisTrans","currentZF","currentZP","actualMin","actualDelta","transX","transY","isPinch","xAxisLoc","yAxisLoc","showZoomingToolkit","toolboxItems","toolbarItems","spacing","iconSize","xPosition","shadowElement","defElement","createDefs","zoomFillColor","currentItem","outerElement","panIcon","zoomDiv","zoomheight","zoomToolkitMove","zoomToolkitLeave","showToolkit","zoomCompleteEventCollection","zoomCompleteEvent","chartMouseWheel","mouseDownHandler","mouseCancelHandler","addTouchPointer","touchList","pointerId","ButtonsDirective","inject","getTag","ButtonsPlugin","DialogButtonDirective","DialogButtonPlugin","DialogComponent","getButtons","getDimension","sanitizeHelper","isFullScreen","DialogPlugin","arKw","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","inserted","mCell","isIntersecting","intersectingCell","Width","Height","base","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","strikeThrough","wrapText","hAlign","vAlign","numberFormat","borders","Borders","isGlobalStyle","Font","sz","strike","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","Border","mLine","mColor","Rows","Image","Cell","Cells","Utils","bitConverterToInt32","bitConverterToInt16","bitConverterToUInt32","bitConverterToUInt16","bitConverterUintToInt32","bitConverterInt32ToUint","bitConverterInt32ToInt16","byteToString","byteIntToString","arrayCopy","destination","destinationIndex","dataToCopy","mergeArray","arrayOne","arrayTwo","mergedArray","encodedString","chr1","chr2","chr3","encode1","encode2","encode3","encode4","keyStr","resultIndex","DecompressorHuffmanTree","init","m_LengthTree","m_DistanceTree","prepareData","blCount","treeSize","MAX_BITLEN","treeFromData","tree","pointer","increment","revcode","subTree","treeLen","m_Tree","unpackSymbol","lookahead","peekBits","skipBits","subtree","bitlen","availableBits","ChecksumUpdate","checkSumUInt","DEF_CHECKSUM_BIT_OFFSET","DEF_CHECKSUM_ITERATIONSCOUNT","DEF_CHECKSUM_BASE","ChecksumGenerate","CompressedStreamReader","bNoWrap","defaultHuffmanDynamicTree","DEF_HEADER_METHOD_MASK","DEF_HEADER_INFO_MASK","DEF_HEADER_FLAGS_FCHECK","DEF_HEADER_FLAGS_FDICT","DEF_HEADER_FLAGS_FLEVEL","DEF_MAX_WINDOW_SIZE","DEF_HUFFMAN_REPEATE_MAX","DEF_HUFFMAN_END_BLOCK","DEF_HUFFMAN_LENGTH_MINIMUMCODE","DEF_HUFFMAN_LENGTH_MAXIMUMCODE","DEF_HUFFMAN_DISTANCE_MAXIMUMCODE","mCheckSum","tBuffer","mBufferedBits","mTempBuffer","mBlockBuffer","mbNoWrap","mWindowSize","mCurrentPosition","mDataLength","mbCanReadNextBlock","mbCanReadMoreData","mbCheckSumRead","DOMException","mInputStream","readZLibHeader","decodeBlockHeader","fillBuffer","bitMask","mBuffer","bytesRead","read","readInt16","readBits","bFinalBlock","blockType","mbReadingUncompressed","skipToBoundary","readInt16Inverted","lengthComplement","mUncompressedDataLength","mCurrentLengthTree","mCurrentDistanceTree","lengthTree","distanceTree","trees","decodeDynamicHeader","bLastSymbol","iLengthsCount","iDistancesCount","iCodeLengthsCount","iResultingCodeLengthsCount","arrResultingCodeLengths","arrDecoderCodeLengths","iCurrentCode","treeInternalDecoder","bNeedBreak","miRepSymbol","DEF_HUFFMAN_DYNTREE_REPEAT_BITS","DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS","tempArray","readHuffman","free","dataRead","readdata","numDataRead","numReadMore","iRepeatLength","DEF_HUFFMAN_REPEAT_LENGTH_BASE","iRepeatExtraBits","DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION","extra","DEF_HUFFMAN_REPEAT_DISTANCE_BASE","iRepeatDistance","DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION","initialLength","inBlockPosition","oldDataLength","dataToRead","readPackedBytes","readInt32","DEF_REVERSE_BITS","Stream","inputStream","byteLength","readByte","toByteArray","CRC32TABLE","INT_SIZE","SHORT_SIZE","CentralDirectoryEndSignature","CentralDirSizeOffset","CentralHeaderSignature","BufferSize","ZipArchive","initCrc32Table","files","isMicrosoftBrowser","navigator","msSaveBlob","file","ZipArchiveItem","addDirectory","directoryName","base64String","zipByteArray","lCentralDirEndPosition","findValueFromEnd","iCentralDirSize","ReadInt32","lCentralDirPosition","readCentralDirectoryDataAndExtractItems","itemHelper","readCentralDirectoryData","readData","checkCrc","decompressData","unCompressedStream","save","zipArchive","saveInternal","saveAsBlob","blob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","reader_1","FileReader","onload","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","currentIndex","nextIndex","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","shift","writeFooter","Blob","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","bytes","modTime","modiDate","lStreamSize","arrBuffer","lLastPos","lCurrentPosition","uiCurValue","bFound","ReadInt16","ReadUInt16","ZipArchiveItemHelper","headerSignature","crc32","compressionMethod","originalSize","iFileNameLength","iExtraFieldLenth","iCommentLength","externalAttributes","localHeaderOffset","m_strItemName","readLocalHeader","readCompressedData","decompressDataOld","decompressedData","reader","compressedStream","iReadBytes","iNameLength","iExtraLength","headerVal","dataStream","iBytesLeft","iBytesToRead","itemName","decompressedStream","ValueFormatter","cultureName","isServerRendered","displayText","CsvHelper","separator","csvStr","formatter","globalStyles","Map","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","error","has","dataUrl_1","URL","createObjectURL","dwlLink","createElementNS","download","href","event_1","revokeObjectURL","encodingType","encoding","encodeString","BlobHelper","parts","append","part","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","currency","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","cellStyle","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","manager","subject","createdDate","modifiedDate","tags","jsonSheet","sheet","mergeCells","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","freeze","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","fromJson","toJson","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","rowId","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","colSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","processColor","colorVal","rgbColors","processCellValue","cellValue","processedVal","startindex","processString","substring","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","changeNumberFormats","returnFormat","getNumberPattern","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","font","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","value_1","sstvalue","imagesLength","parserImage","lastRow","lastColumn","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","_j","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","convertToPixels","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","ArrayBuffer","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","numFmtStyle_1","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","toISOString","topRelation","wbRelation","contentTypeString","sheetsOverride","drawingIndex","xmlString","archiveItem","startCell","endCell","updatedMergedCellStyles","sCell","eCell","dateToTicks","ticksPerDay","daysToMonth365","daysToMonth366","isLeapYear","timeToTicks","totalSeconds","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","AriaService","setOptions","setStateAndProperties","config","setExpand","expand","setSort","setBusy","isBusy","busy","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","datarole","selected","multiselectable","haspopup","colcount","rowcount","processFutureTime","substr","eifelerRegelAppliesToNumber","processPastTime","lastDigit","firstDigit","lb","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_RTL","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_DISABLE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_HSCROLLBAR","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","el","ej2_instances","tempId","destroyItems","lastElementChild","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollStep","scrollModule","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","wireKeyboardEvent","keyModule","keyActionHandler","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","trgt","clst","keyHandling","navChk","scrollChk","nodes","rootEle","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","ele_1","activeEleRemove","tbarScrollChk","disable","eleContains","sib","skipEle","elem","tbrItems","itemObj","isPopupElement","clsList","popupNav","popupClickHandler","tempItem","clickedArgs","getElementOffsetY","minHeight","renderControl","portals","ariaAttr","renderItems","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","scrollEle","itemWidthCal","marginTop","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","createPopupIcon","innerNavDom","checkPriority","removeProperty","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle","popupInit","maxHeight","eleStyles","borderRightWidth","tbarPopupHandler","isOpen","toolEle","popupElePos","popIcon","scrollVal","scrollY","innerHeight","overflowHeight","tbEleData","popupOffset","documentElement","inEle","pre","checkoffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","nav","navItem","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","state_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","keyVal","enableItems","isEnable","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","regEx","tempStr","toolbarTemplateID","isStringTemplate","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","curEle","multirowele","updateHideEleTabIndex","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","innerItems_1","CLS_ROOT","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","scroll","touchHandler","swipeHandler","createOverlay","createNavIcon","setScrollState","scrollDiv","innerEle_1","overflowX","scrollItems","overlay","navEles","rightOverlayEle","clsRight","rightEle","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","clearInterval","timeout","scrollDis","timeoutFun","setInterval","isContinuous","frameScrollRequest","swipeEle","velocity","distanceX","step","sin","cancelAnimationFrame","requestAnimationFrame","scrollUpdating","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","webpackContext","req","webpackContextResolve","__webpack_require__","o","exports","az","zhHk","hr","Reorder","idx","headerDrop","enableAfterRender","drag","dragStart","dragStop","createReorderElement","keyPressHandler","chkDropPosition","srcElem","destElem","bool","lockColumn","isEqualNode","targetParentContainerIndex","chkDropAllCols","isFound","getHeaderCells","pop","findColParent","cnt","getColumnsModel","isNotStackedHeader","columnModel","subCols","dropElement","uId","destElemDiv","destElemUid","destColumn","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","newIndex","destElement","oldIdx","isActionPrevent","destIndex","reorderByColumn","preventRefresh","handler","arg1","arg2","getColParent","srcIdx","lockcolPositionCount","frozenColumns","getFrozenLeftCount","getFrozenRightColumnsCount","toColumnUid","cols_1","refreshColumnIndex","stackedHdrColumn","getStackedColumns","stackedCols","getAllStackedheaderParentColumns","flatColumns","parents","reorderSingleColumn","fromFName","toFName","reorderMultipleColumns","fromFNames","getColumnIndexByField","getColumnByIndex","moveTargetColumn","reorderSingleColumnByTarget","fieldName","reorderMultipleColumnByTarget","reorderColumns","fromCol","reorderColumnByIndex","reorderColumnByTargetIndex","isXaxis","setDisplay","upArrow","downArrow","getColumnHeaderByField","focusModule","onClick","isMacLike","platform","metaKey","currentInfo","visibleCols","getVisibleColumns","toCol","cloneElement","getHeaderTable","stopTimer","updateScrollPostion","updateArrowPosition","draggableType","cliRect","cliRectBaseRight","cliRectBaseLeft","scrollElem","timer","cliRectBase","CommandColumnRenderer","locator","buttonElement","unbounDiv","childRefs","tabindex","destroyButtons","isVirtualEdit","localizer","tempID","renderTemplates","renderButton","setAttributes","buttonOption","onclick","buttonObj","commandType","CommandColumn","initiateRender","cellFac","getService","addCellRenderer","commandClickHandler","commandColumn","getRowObjectFromUID","commandCols","idInString","typeInString","findIndex","rowData","commandclickargs","editModule","startEdit","closeEdit","commandDelIndex","clearSelection","selectRow","deleteRecord","load","commandCol","LegendSettings","BaseLegend","maxItemHeight","rowHeights","pageHeights","columnHeights","pageXCollections","chartRowCount","legendTitleCollections","legendRegions","pagingRegions","legend","isChartControl","isAccChartControl","isBulletChartControl","isStockChartControl","bulletChart","fivePixel","rowCount","pageButtonSize","maxColumns","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTop","isTitle","currentPageNumber","getPosition","itemPadding","library","get3DLegendBounds","getLegendBounds","containerPadding","accumulation","setBounds","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","isBulletChart","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","axisTextSize","legendSize","titlePlusArrowWidth","pagingLegendBounds","requireLegendBounds","firstLegend","findFirstLegendPosition","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","totalPages","textSize","shapeHeight","isRtlEnable","getLinearLegend","legendSeriesGroup","previousLegend","startPadding","shapeWidth","xLocation","textOptions","shapePadding","legendIndex","leftSpace","bottomSapce","rightSpace","legendOption","isReverse","accessbilityText","generateId","getRenderPoint","renderSymbol","renderText","toggleVisibility","renderPagingElements","xmlns","nextLegend","gradientLegendCount","linerGradientEle","fillColors","numberItems","colorMap","diffValue","colorsLength","calculatedValue","full","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startLabel","endLabel","startTextSize","endTextSize","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","hiddenColor","fontcolor","isCanvas","translatePage","gradientLegend","legendCollection","legendCollection_1","legendTitleFont","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","createClipPath","pagingClipRect","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","seriesBorder","isLineShapemarker","symbolOption","markerVisibility","textOption","pageTextElement","paginggroup","grayColor","cursor","clipPathHeight","totalNoOfPages","getPageHeight","sum","pagingText","pageNumber","changePage","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","prefix","move","clearTooltip","LegendOptions","addDays","getTradePeriodName","yearSuffix","ToString","Substring","numOfDays","getDateDiffInDays","tradeablePeriod","getQuarter","getBusinessDatesCount","dayOfWeek","ga","SvgRenderer","rootID","svgLink","rootId","getOptionValue","svgObj","setElementAttributes","setSVGSize","line","rectangle","drawCircle","circle","drawPolyline","polyline","drawEllipse","ellipse","polygon","setAttributeNS","preserveAspectRatio","createText","createTSpan","tSpan","createTitle","defs","clipPath","createForeignObject","foreignObject","createPattern","createRadialGradient","colorStop","newOptions","cx","cy","fx","fy","drawGradient","createLinearGradient","gradientType","gradient","stop_1","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","ctx","getContext","setCanvasSize","lineWidth","dashArrayString","setLineDash","strokeStyle","beginPath","stroke","moveTo","lineTo","restore","canvasTranslate","canvasCtx","rx","globalAlpha","drawCornerRadius","fillStyle","fillRect","arcTo","closePath","dataSplit","flag","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","counterClockWise","dy","isTSpan","baseline","textBaseline","txtlngth","rotate","fillText","circumference","ry","imageObj","src","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","dataUrl","img_1","clip","getTooltipThemeColor","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","measureText","themeFontStyle","breakText","textArray","whiteSpace","lineHeight","Size","withInAreaBounds","findDirection","rX","rY","arrowLocation","arrowPadding","tipX","tipY","controlName","Rect","Side","isRight","isBottom","CustomizeOption","TextOption","baseLine","removeElement","drawSymbol","calculateShapes","functionName","renderOption","locX","locY","eq","PathOption","renderOptions","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","removeSVG","createTooltipElement","highlightPadding","areaMargin","markerPoint","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","createTemplate","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","enableRTL","shapes","marginX","palette","tipLocation","marginY","isFixed","sharedTooltipLocation","tooltipLocation","clipBounds","wrapPadding","wrapHeader","isWrap","wrappedText","headerSize","xLength","pathElement_1","pointRect","enableAnimation","updateDiv","animateTooltipDiv","tooltipPlacement","enableShadow","shadowId","shadow","changeText","revert","findFormattedText","isRender","lines","tspanElement","tspanOption","subWidth","tspanStyle","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isColumn","subStringLength","markerPadding","spaceWidth","labelColor","contentWidth","withoutHeader","isTextWrap","reverse","isRTLText","textFont","getTooltipTextContent","width_1","renderContentRTL","contentWidthIndex","characterCollection","isRtlText","isValidHTMLElement","firstElement","templateElement","sharedTemplateElement","controlInstance","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","getCurrentPosition","symbolLocation","boundsX","boundsY","outOfBounds","currenDiff","transition","tooltipElement","tooltipGroup_1","Node","ELEMENT_NODE","opacity_1","progressAnimation","endAnimation","tooltipGroup","ur","ColumnBase","enableSideBySidePlacement","getSideBySidePositions","seriesSpacing","columnSpacing","pointSpacing","columnWidth","minimumPointDelta","groupName","mainColumnWidth_1","mainWidth","mainDoubleRange","difference","canvasRender","gradientColor","cx1","cx2","cy1","cy2","xl","yl","xPos","yPos","rxt","ryt","gx1","gx2","gy1","gy2","ini","stacking","isLastSeries","AEx","AEy","LX","LY","GX","GY","X1","Y1","X2","Y2","optiong","gradientElement","linearGradientElement","stopElement","findRectPosition","vSeries","updateYRegion","updateXRegion","getRegion","calculateRoundedRectPath","topLeft","topRight","bottomLeft","bottomRight","animateRect","isPlot","halfValue","esUs","tet","dv","tk","weekEndings","hu","zhCn","te","ChartData","insideRegion","getRectPoint","fromCenterX","fromCenterY","clickAngle","startAngle","endAngle","distanceFromCenter","arcAngle","currentXPosition","atan2","innerRadius","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","isBar","heightValue","getClosest","xvalues","leftSideNearest","rightSideNearest","isDataExist","binarySearch","middle","found","getDistinctValues","commonXValues","intial","TabItemsDirective","TabItemsPlugin","TabItemDirective","TabItemPlugin","TabComponent","addTab","enableTab","getItemIndex","tabItemId","hideTab","refreshActiveTab","refreshActiveTabBorder","removeTab","TabPlugin","sv","ugCn","MultiColoredSeries","getAreaPathDirection","startPath","getAreaEmptyDirection","isXSegment","segments","segment","getAxisValue","sortSegments","chartSegments","segmentAxis","applySegmentAxis","includeSegment","attributeOptions","areaBorderCount","createClipRect","multiColoredAreaSeriesModule","startValue","endValue","isX","isRequired","startPointLocation","endPointLocation","segmentValue","MultiColoredLineSeries","lastPoint","segmentPoint","webpackPolyfill","deprecate","paths","legendClick","legendRender","pointRender","sharedTooltipRender","seriesRender","axisLabelRender","axisRangeCalculated","tooltipRender","chartMouseMove","chartMouseClick","chartDoubleClick","chartMouseLeave","chartMouseDown","chartMouseUp","zoomComplete","resized","beforeResize","beforePrint","annotationRender","stockEventRender","regSub","regSup","beforeExport","onZooming","msMy","Category","calculateRange","getActualRange","applyRangePadding","calculateVisibleLabels","initializeDoubleRange","calculateVisibleRange","eo","sd","StripLine","measureStripLine","actualStart","actualEnd","isDateTimeAxis","isRepeat","dateToMilliSeconds","isCoreDate","getFromTovalue","startFromAxis","to","from","sizeType","isSegmented","segmentStart","segmentEnd","segRect","getToValue","findValue","isEnd","fromValue","dateParse","striplineGroup","axes_1","getSegmentAxis","repeatEvery","repeatUntil","renderStripLineElement","getStartValue","renderPath","strokeWidth","renderRectangle","stripLineLabelFont","isRotationNull","textMid","ty","tx","getTextStart","factor","horizontalAlignment","verticalAlignment","invertAlignment","segmentAxisName","pixelRect","xy","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","br","weekdaysParse","mi","mk","last2Digits","nb","kk","arTn","ExportHelper","hideColumnInclude","parentDetails","totalRecordsCount","getFData","getGridRowModel","isExpand","hierarchyPrintMode","expandedRows","generateCells","processColumns","childGridLevel","generateCell","getColumnData","gridObj","columnPromise","fColumns","colData","getHeaders","isHideColumnInclude","colDepth","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","gridRows","StackedHeader","isIgnoreFirstCell","Header","columnIndexes","getColumnIndexesInView","HeaderIndent","checkAndExport","gridPool","globalResolve","failureHandler","childGridObj","createChildGrid","exportType","detailRowModule","getGridModel","isPrinting","parentID","parentPrimaryKeys","parentKeyField","parentKeyFieldValue","parentRowData","exportId","isExportGrid","getGridExportColumns","actualGridColumns","gridColumns","ExportValueFormatter","internationalization","returnFormattedValue","customFormat","formatCellValue","cFormat","ExcelExport","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isChild","isElementIdChanged","grpFooterTemplates","footerTemplates","aggIndex","totalAggregates","isExporting","exportValueFormatter","grid","exportProperties","isMultipleExport","workbook","isCsv","isBlob","isBlb","Child","workbk","isMultiEx","hierarchyExportMode","gridObject","processRecords","exportingSuccess","blobPromise","gridInstance","allPromise_1","processInnerRecords","getCurrentViewRecords","query_1","isCountRequired","groupedColLength","blankRows","isExportPropertiesPresent","multipleExport","processExcelHeader","stringify","processGridExport","organisedRows","organiseRows","processExcelFooter","enableFilter","headerRowLen","headerRows","initialIndex","childRows","excelRows","gColumns","headerRow","groupIndent","processHeaderContent","groupData","lazyloadData","acc","curr","lazQuery","contentModule","lazyLoadQuery","processRecordContent","capTemplate","returnType","currentViewRecords","excelRow","record","processRecordRows","processGroupedRows","GroupGuid","processAggregates","excelExportProperties","dataSource_1","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","fillAggregates","childLevels","lIndex","hIndex","tCell","col_1","templateRowHeight","gCell","valueAccessor","arr","fkData","excelCellArgs","base64","setImage","getColumnStyle","parentRow","processDetailTemplate","returnVal","beforeDataBound","childGridCell","rowObj","templateData","detailCellIndex","detailIndent","columnHeader","processCell_1","currentCell","getHeaderThemeStyle","getRecordThemeStyle","excelHAlign","excelVAlign","excelRotation","excelBorders","excelNumberFormat","excelType","processRow","currentRow","excelDetailCells","detailCell","excelImage","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","rows_2","columnsDetails","getAggreateValue","Sum","Average","Max","Min","Count","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","row_1","dummyOutlineLevel","dummyGrouping","txt","JSON1","JSON2","attrname","headerRotation","degree","spannedCells","parseStyles","currentCellIndex","gridCell","DetailHeader","getIndex","spannedCell","headerTextAlign","excelHeaderCellArgs","updateThemeStyle","themestyle","caption","noRows","updatedCellIndex","footerRows","spannedCells_1","it","itCh","enNz","monthsShortWithDots","monthsShortWithoutDots","getCloneProperties","Print","isAsyncPrint","defered","isContentReady","actionBeginFunction","onEmpty","hierarchyPrint","isPrintGrid","contentReady","removeColGroup","printGridObj","printModule","renderPrintGrid","printGrid","getFrozenColumns","getInjectedModules","injectedModues","setInjectedModules","printgrid","selectedRows","contentDiv","headerDiv","waitingPop","printGridElement","printWind","outerHeight","outerWidth","screen","availWidth","availHeight","groupCaption","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","enIl","WRAPPERCLASS","POPUPDIMENSION","DAY","HOVER","NAVIGATION","ICONANIMATION","FOCUS","LISTCLASS","HALFPOSITION","ANIMATIONDURATION","OFFSETVAL","EDITABLE","wrapperAttributes","TimePickerBase","createListItems","createdEl","timeFormat","listItems","timeCollections","listTag","createList","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","keyConfigure","down","up","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","inputEleValue","getDateObject","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","initValue","defaultCulture","checkTimeFormat","checkInValue","scrollTo","checkAttributes","localeText","isNavigate","isPreventBlur","isTextSelected","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrTime","dateFormat","cldrFormat","isInvalid","valueExpression","valueExp","setCurrentDate","cldrDateTimeString","getCultureTimeObject","ariaAttribute","enableElement","rippleFn","propertyList","generateList","listWrapper","addSelection","getPopupHeight","popupHeight","wireListEvents","rippleModel","containerStyle","setPopupWidth","unWireListEvents","modelTitleSpan","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","validateState","disableTimeIcon","disableElement","selectInputText","setSelectionRange","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","inputWidth","setScrollTo","findScrollTop","listHeight","liHeight","initialTime","scrollTime","getText","getValue","cldrTimeFormat","cldrDateFormat","cldrDate","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","popupHandler","closePopup","curPos","cursorDetails","focusSelection","isSeparator","keyHandler","updateValue","objToString","createMask","previousState","onMouseClick","animModel","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","isNavigation","valueProcess","prevValue","onMouseOver","currentLi","setHover","removeHover","onMouseLeave","minVal","maxVal","dateVal","strictOperation","maxValue","minValue","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","setZIndex","getTextFormat","strArray","validateValue","newval","findNextElement","textVal","timeVal","collections","selectNextItem","validLiElement","elementValue","backward","elementIndex","isCheck","nextItem","isUpdate","hoveredItem","getHoverItem","setActiveClass","formatStr","timeParse","listBaseOptions","getProperty","popupAlignment","timePopupElement","formatValues","DATEPICKERROOT","DATETIMEWRAPPER","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","DateTimePicker","scrollInvoked","formatRegex","dateFormatString","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","cldrDateTime","isDatePopupOpen","toggle","listCreation","dateObject","TimePopupFormat","startTime","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","modelWrapper","dateTimeCloseHandler","timeContent","setDimension","setTimeHover","removeTimeHover","nextElement","listContent","getFullDateTime","tempVal","combineDateTime","seconds","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","method","milliseconds","tempStartValue","tempMin","formatCount","proxy","formatValueSpecifier","formattext","tempEndValue","tempMax","getUTCFullYear","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","sw","CheckBoxComponent","CheckBoxPlugin","dataQuery","dataManagerDeferred_1","getModel","upDownKeyHandler","ul","defaultIdx","liIdx","selectedLi","setBlankIconStyle","blankIcon","blankIconList","menuItem","paddingLeft","paddingRight","iconLi","cssProp","sk","getNumberParser","fromView","FilterCellRenderer","getGui","innerDIV","fltrData","isReactCompiler","isReactChild","parentInstObj","filterBarTemplate","Element","clearIconElem","localeObj","appendHtml","showFilterBarOperator","operatorIconRender","templateWrite","innerHtml","operators","fbicon","filterModule","dropOptr","popupWidth","internalEvent","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","ddOpen","dropDownOpen","customFilterOperators","destroyDropDownList","renderOperatorUI","dlgConetntEle","dlgObj","dialogObj","optr","optrData","customOptr","dropDatasource","selectedValue","dropSelectedVal","optrDiv","optrInput","valInput","renderResponsiveDropDownList","selValue","selectedField","optrLen","getFlOperator","StringFilterUI","serLocator","processDataOperation","getAutoCompleteOptions","foreignColumnQuery","filteredData","getDistinct","enableCaseSensitivity","autoComplete","sortOrder","localizeText","acFocus","acComplete","acOpen","defObj","deffered","actObj","afterRenderFilterUI","struiObj","filterOptr","filterObj","actuiObj","filterValue","filterByColumn","getOptrInstance","mapObj","NumberFilterUI","keyEventHandler","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","ddComplete","drpuiObj","DateFilterUI","dpOpen","fltrSettings","inputElem","datePickerObj","dateuiObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","clearCustomFilter","clearBtnClick","applyCustomFilter","filterBtnClick","openDialog","renderDlgContent","closeDialog","columnType","filterModel","mainDiv","dlgDiv","responsiveCnt","closeOnEscape","dialogCreated","buttonModel","isPrimary","renderResponsiveDialog","isModal","currentDialogCreatedColumn","renderFilterUI","ui","writeMethod","renderFlValueUI","menuOperator","valueDiv","fObj","instanceofFilterUI","valueInString","compElement","cBox","getAllData","dlgContentEle","flValue","targ","flOptrValue","fltrValue","eControl","closeResponsiveDialog","removeFilteredColsByField","getFilterUIInfo","renderCheckBoxMenu","updateModel","getAndSetChkElem","btnClick","dlg","sBox","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","clearFilter","fltrBtnHandler","ExcelFilterBase","eventHandlers","focusedMenuItem","isExcel","getCMenuDS","datetime","dateonly","unwireExEvents","menuObj","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","menu","isResponsiveFilter","hdrele","getColumnHeaderByUid","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","iconName","isSubMenu","wireExEvents","hoverHandler","clickExHandler","keyUp","focusNextOrPrevElement","focusableElements","focusClassName","shiftKey","focusClass","excelSetFocus","prevElem","isCMenuOpen","contextKeyDownHandler","cmenu","focused","submenu","selectedMenu","menuOptions","selectHandler","onClose","beforeClose","preventClose","contextRect","getContextBounds","innerWidth","getCMenuYPosition","existingPredicate","isFilterBack","MouseEvent","contextWidth","targetPosition","leftPos","targetBorder","showDialog","filterLength","filteredColumns","renderDialogue","complexFieldName","overlayClick","dropDownList","templateField_1","createdDialog","rowResponsiveDlg","destroyTemplate","removeObjects","renderCustomFilter","dialog","dlgFields","fieldSet","displayName","checkBoxValue","colValue","fValue","fOperator","sValue","sOperator","checkBox","andRadio","firstOperator","firstValue","secondOperator","secondValue","mPredicate","fColl","arg3","arg4","arg5","arg6","arg7","arg8","filterCollection","ejpredicate","actualPredicate","foreignKeyFilter","elementID","fieldElement","xlfloptr","menuText","dropDownValueChange","removeHandlersFromComponent","includes","getSelectedText","renderRadioButton","td","radioDiv","frstpredicate","secndpredicate","renderMatchCase","orRadio","elements_1","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDate","renderDateTime","predIndex","matchCaseDiv","matchCaseInput","checkbox","inputValue","isRtl","datePicker","dateTimePicker","completeAction","numericTextBox","colObj","acActionComplete","mapObject","columnvalue","ExcelFilter","excelFilterBase","isCustomFilter","Filter","contentRefresh","filterByMethod","cellText","nextFlMenuOpen","filterOperators","endsWith","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","wildCard","isNull","notNull","like","fltrDlgDetails","skipNumberInput","skipStringInput","setFullScreenDialog","getObject","getLocalizedCustomOperators","fltrElem","rowRenderer","cellrender","generateRow","rowdrag","detail","gCells","case","showCustomFilter","responsiveDialogRenderer","isCustomDialog","showResponsiveDialog","renderResponsiveChangeAction","setFilterModel","updateFilterMsg","dropdownlist","filterBarElement","registerAdaptiveService","isFilter","getFrozenMode","RowDragHIcon","filterObjIndex","getFilteredColsIndexByField","prevFilterObject","arrayVal","isMenuNotEqual","currentFilterObject","actualFilterValue","actualOperator","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","refreshFilterValueFn","initialEnd","initialLoad","columnPositionChanged","filterMenuClose","docClickHandler","refreshClearIcon","columnMenuFilter","filterIconClickHandler","targetText","filterOperator","filterCell","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","colLen","actualData","checkboxPrevFilterObject","checkboxFilterObject","iconClass","filterIconElement","updateFilterIcon","refreshFilterSettings","updateFilter","updateExternalMessage","refreshHeader","filterElement","getFilterBarElement","fltrIconElement","refreshFilter","clearFiltering","renderModule","colUid","filteredcols","fltrElement","filterDialogOpen","createOptions","hideSearchbox","filterHandler","localizedStrings","getLocaleConstants","allowCaseSensitive","parentTotalDataCount","totalDataRecordsCount","getFilteredRecords","parentCurrentViewDataCount","parentFilteredLocalRecords","isClearFilterBar","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","clearIndicator","updateCrossIcon","getFormatFlValue","showFilterBarStatus","formater","isSkip","operatorSymbols","startTimer","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","dateonlyOperator","booleanOperator","gClient","fClient","filterOperatorElement","inputId","datepickerEle","hasDialog","hasDialogClosed","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","TrendlinesDirective","TrendlinesPlugin","TrendlineDirective","TrendlinePlugin","SegmentsDirective","SegmentsPlugin","SegmentDirective","SegmentPlugin","SeriesCollectionDirective","SeriesCollectionPlugin","SeriesDirective","SeriesPlugin","StripLinesDirective","StripLinesPlugin","StripLineDirective","StripLinePlugin","CategoriesDirective","CategoriesPlugin","CategoryDirective","CategoryPlugin","MultiLevelLabelsDirective","MultiLevelLabelsPlugin","MultiLevelLabelDirective","MultiLevelLabelPlugin","AxesDirective","AxesPlugin","AxisDirective","AxisPlugin","RowsDirective","RowsPlugin","RowDirective","RowPlugin","ColumnsDirective","ColumnsPlugin","ColumnDirective","ColumnPlugin","RangeColorSettingsDirective","RangeColorSettingsPlugin","RangeColorSettingDirective","RangeColorSettingPlugin","AnnotationsDirective","AnnotationsPlugin","AnnotationDirective","AnnotationPlugin","SelectedDataIndexesDirective","SelectedDataIndexesPlugin","SelectedDataIndexDirective","SelectedDataIndexPlugin","IndicatorsDirective","IndicatorsPlugin","IndicatorDirective","IndicatorPlugin","ChartComponent","ChartPlugin","yo","SPINNER_CLASS","inputObject","ComboBox","wireEvent","preventBlur","onBlurHandler","targetFocus","onInput","onFilterUp","onFilterDown","pasteHandler","bindCommonEvent","customValue","valueMuteChange","setHiddenValue","dataItem","itemData","detachChangeEvent","getElementByText","getElementByValue","isExistItem","getItemData","clearIconHide","getAriaAttributes","ariaAttributes","hiddenElement","incrementalSearch","setSearchBox","searchBoxContainer","inlineSearch","getFocusElement","isDropDownClick","sortedData","activeItem","updatingincrementalindex","incrementalEndIndex","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","skeletonCount","removeFocus","fixedHead","selectedLiOffsetTop","removeFillSelection","checkCustomValue","getDataByValue","showSpinner","spinnerElement","disableIcon","hideSpinner","isHover","getTextByValue","currentFillValue","updateSelectedItem","isAndroidAutoFill","setAutoFillSelection","isAndroid","getSelectionPoints","prevEnd","prevSelectPoints","curEnd","prevStart","curStart","focusItem","selection","getValueByText","unWireEvent","unBindCommonEvent","selectCurrentItem","onChangeEvent","preventFocus","onFocus","previousValue_1","initial","updateCustomValueCallback","changeData","checkData","setReadOnly","comboProps","itemIndex","isEscape","isEscapeKey","sl","numbersPast","numbersFuture","verbalNumber","fi","AnnotationBase","setAnnotationPixelValue","accumulationBound","setAnnotationPointValue","xAnnotation","setAccumulationPointValue","annotationElement","annotationRendered","coordinateUnits","setElementStyle","accPoint","elementRect","setAlignmentValue","ChartAnnotation","arSa","bg","my","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tempCells","cells_1","rowArgs","cellArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isDataRow","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","_loop_2","isColumnSelected","cellRenderer","getCellRenderer","DetailExpand","requireTemplateRef","isTemplate","thisRef_1","requestTypeAction","isRowSpanned","rowsObject","getRowsObject","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","emptyColspan","getFrozenLeftColumnsCount","freezeCells","oldColspan","colspan","rowHeight","eventArg_1","isSelectable","cellTemplate","thisRef_2","disableRowSelection","isDraggable","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","vFTable","summarycell","lastSummaryCell","firstSummaryCell","thisRef","eventArg","isPartialSelection","selRowIndex","chkBox","isDrag","cellIdx","isDetail","classes","isAltRow","isCaptionRow","rowindex","dataUID","ariaSelected","gl","es","invalidDate","ColumnSeries","pointColumn","RowModelGenerator","getInfiniteIndex","enableImmutableMode","ensureColumns","RowDragIcon","pid","tIndex","parentGid","enableAltRow","refreshForeignKeyRow","foreignKeyColumns","dummies","oIndex","refreshRows","isFunction","Function","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsNominative","monthsSubjective","pl","fa","ar","LineSeries","prevPoint","isDrop","bn","zhTw","CandleSeries","centerRegion","tickRegion","median","getPathString","triggerPointRenderEvent","drawCandle","getCandleColor","enableSolidCandles","bullFillColor","bearFillColor","topRect","midRect","center","candleElement","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","ru","mn","ky","bnBd","ro","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","deltaY","swipeElement","distanceY","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","lookup","ErrorOption","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","required","infoElement","selectQuery","localyMessage","defaultMessages","email","dateIso","creditcard","digits","rangeLength","tel","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validate","validateRules","rules_1","name_1","clearForm","getInputElement","validClass","elements_2","inputParent","grandParent","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","rule","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","message","annotationMessage","getErrorMessage","isCheckable","submitHandler","clearEvents","excludeKeys","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","inputName","isValid","ignore","removeErrorRules","showMessage","createErrorElement","errorElement","optionalValidationStatus","refer","param","currentRule","checkValidator","ruleValue","formats","errorOption","Message","errorContainer","containerId","divElement","customPlacement","nextSibling","checkRequired","inputType","uNum","compareTo","Label","ButtonComponent","ButtonPlugin","HeaderRender","frzIdx","notfrzIdx","isFirstCol","isReplaceDragEle","currentStateTarget","parentEle","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","colIndex","drop","droppedElement","ariaService","setVisible","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","renderPanel","isRendered","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","getTable","headerTable","getColGroup","colgroup","setColGroup","getRows","tHead","createTable","tableEle","tableName","cellspacing","findHeaderRow","createHeaderContent","thead","bodyCell","rowBody","updateColGroup","colHeader","indexes","enablePersistence","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","getColSpan","isFirstCol_1","isLaststackedCol","getColumnIndexByUid","lockColsCount","displayVal","clen","getNormalizedColumnIndex","refreshUI","freezeReorder","appendContent","updateDefaultCursor","firstHeaderCell","stackedHdr","dragTarget","abort","droppableDestroy","droppable","accept","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","clean","hValueAccer","elementDesc","headerValueAccessor","checkAllWrap","buildAttributeFromCell","matchFlColumns","customAttributes","extendPrepareHeader","headerTempID","isReactChild_1","copied","clipMode","titleElem","matchFilteredColumns","StackedHeaderCellRenderer","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","gCaptionTemp","tempObj","getTemplate","tempValue_1","captionTemplate","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","infiniteScrollSettings","enableCache","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","flIcon","Columns","headerCell","allowSelection","searchString","pageSizes","checkAll","dataLength","prevPageMoving","lazyLoadRender","getGroupCache","refreshContentRows","resetTemplates","detailTemplateID","toolbarTemplate","guid","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","showMaskRow","virtualInfo","sentinelInfo","isFActon","isNeedForeignAction","deffered_1","validateGroupRecords","dataManagerFailure","deferred","foreignKey","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","isTrigger","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","renderEmpty","dynamicColumnChange","updateColumnType","fmtr","validationRules","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","prevCurrentView","removeMaskRow","updatesOnInitialRender","agg","immutableModeRendering","alert","setRowElements","setRowObjects","preventAdjustColumns","setRowCount","setFirstFocusableTabIndex","dataRowCount","isEmptyCol","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","GroupCaption","GroupCaptionEmpty","Expand","group0","groupN","addWhere","groups","curDm","curFilter","newQuery","rPredicate","updateGroupInfo","current","untouched","uGroup","itemGroup","uGroupItem","context","customAggregate","CellRendererFactory","cellRenderMap","ServiceLocator","services","register","isAdaptiveUI","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","Search","refreshSearch","onSearchComplete","actionCompleteFunc","cancelBeginEvent","ShowHide","colName","isShowHide","evtHandlers","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","finalized","getKeyBy","batchActionPrevent","changedStateColumns","groupModule","visibleRows","showHideArgs","currentViewCols","emptyVcRows","getSelectedRecords","colsInCurrentView","col1","col2","isModeChg","AggregateColumn","setPropertiesSilent","AggregateRow","Clipboard","copyContent","keyDownHandler","selectedRowCellIndexes","getSelectedRowCellIndexes","copy","clipBoardTextArea","cellSelectionMode","x_1","scrollX","y_1","paste","cellIndexes","isAvail","cIdx","rIdx","getRowByIndex","getCellFromIndex","updateCell","selectCellsByRange","cellIndex","setCopyData","withHeader","getSelection","getDataRows","selectedIndexes","headerTextArray","getCopyData","leftCols","checkBoxSelection","colIndexes","getColumnHeaderByIndex","rowIndexes","isCell","splitKey","colIdx","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","SortDescriptor","SortSettings","Predicate","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","Grid","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","tablesCount","movableCount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","media","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","rowUid","isAutoFitColumns","enableDeepCompare","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","mediaBindInstance","asyncTimeOut","enableLogger","needsID","Grid_1","Inject","mergePersistGridData","ignoreOnPersist","selectedRowIndex","scrollPosition","currentObject","settings","assign","pagerTemplate","persistData","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","sortedColumns","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","isInitial","mediaCol","ignoreCollectionWatch","isPersistSelection","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Items","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","ctrlEnter","shiftEnter","space","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","updateColumnModel","getMediaColumns","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","refreshMaskRow","axisDirection","dialogElement","headerModule","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","contentHeight","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","footerContent","translateMaskRow","maskElement","gridContentScrollHeight","maskTable","maskColgroup","createMaskRow","frzTd","maskTHead","maskTBody","rowCountElement","altRow","altNumber","rowsQuery","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","displayAsCheckBox","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","hideAtMedia","pushMediaColumn","updateFrozenColumnsWidth","matchMedia","mediaQueryUpdate","updateMediaColumns","mediaColumn","matches","invokedFromMedia","showHider","refreshMediaCol","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","clipboardModule","enableBoxSelection","enableAutoFill","setCSSClass","oldCSSClass","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","isCancel","updateAutoFillPosition","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","childGridObject","currentParent","currentParentInstance","currentChildObject","oldProperties","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","pending_1","deepWatch","pKeyField","setRowData","gResult","names","scrollRefresh","isSelectedRowIndexUpdating","setWidthToTable","enableVerticalRendering","fn_1","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","frozenName","frozenCount","leftrightColumnWidth","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","movable","isLeftRightFrozen","stackedHeader","individualColumn","stackedColumn","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getRowElements","getFrozenRightRowByIndex","getRowInfo","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","hdrTbody","freezeRows","addMovableRows","dataRows","generateDataRows","fRows","mrows","includAdd","dRows","isCollapseStateEnabled","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","setCellValue","rowIdx","rowuID","pkName","fieldIdx","rowObjects","selectedRow","Idx","sRow","refreshTD","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","selectRowEle","fRowTr","setFrozenRowData","fTr","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","rowObject","getMovableRowsObject","getFrozenRightRowsObject","getUidByColumnField","getColumnFieldNames","columnNames","getRowTemplate","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","tWidth_1","gWidth","this_2","isPercentageWidthGrid","refreshSplitFrozenColumn","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","changedProperties","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","visibleFrozenColumns","goToPage","pageNo","sortColumn","isMultiSort","sortModule","changeDataSource","clearSorting","removeSortColumn","clearGridActions","isToggle","selectRows","selectCell","fieldname","addRecord","deleteRow","editCell","saveCell","updateRow","getBatchChanges","enableToolbarItems","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderModule","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","contentTable","disValue","autoFitColumns","fieldNames","resizeModule","resizeSettings","tableWidth","percentageWidth","unit","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","setProperty","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","gCols","sCols","_loop_3","sLen","this_3","isFromGroup","showGroupedColumn","initForeignColumn","rendererFactory","createGridPopUpElement","dataReady","gridLines","getTooltipStatus","headerDivTag","htable","ctable","prevElement","elemNames","innerElement","tag","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","dblClickHandler","tapEvent","refreshFrozenPosition","dataBoundFunction","checkEdit","dataRow","filterClear","ariaOwns","keyPress","editFormValidate","persistedData","getLocalData","mergeColumns","storedColumn","storedColumns","_loop_4","localCol","tCol","this_4","presskey","stopImmediatePropagation","collapse","elementToFocus","focusContent","addOutline","injectedModules","refreshColumns","excelExport","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","pdfExportModule","currentGridId","currentGridInstance","exportPromise","exportedGridResults","groupColumn","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","getRowIndexByPrimaryKey","isDetailRow","pKvalue","getUserAgent","getRowUid","getRowElementByUID","rowEle","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","containerHeight","pagesize","nonContentHeight","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","include","sorted","setHeaderText","gridInput","submit","isExpanded","updateRowValue","colpending","resetFilterDlgPosition","filterDlg","callBack","batchUpdate","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","keyField","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","_loop_5","this_5","_loop_6","isRowExist","this_6","renderRowElement","modelData","addRowObject","updateVisibleExpandCollapseRows","getHeight","isInteger","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomSort","showResponsiveCustomColumnChooser","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols","gridCols_1","CHECK","FRAME","INDETERMINATE","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","frameSpan","indeterminate","changeEventArgs","updateVueArrayModel","labelWrap","formElem","fr","arDz","SPINICON","SPINUP","SPINDOWN","INCREMENT","DECREMENT","INTREGEXP","DECIMALSEPARATOR","COMPONENT","NUMERIC_FOCUS","HIDDENELEMENT","selectionTimeOut","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","ejInstance","angularTagName","formEle","attributeName","nodeName","incrementTitle","decrementTitle","cultureInfo","initCultureInfo","initCultureFunc","updateHTMLAttrToElement","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","decimals","roundNumber","hiddenInput","elementPrevValue","setNumber","stepValue","currencyCode","updatedCssClassValue","getNumericValidClassList","inputObj","updateHTMLAttrToWrapper","updateDataAttribute","pro","newClass","oldClass","numericClassName","updatedClassValue","numericStyle","spinDown","spinUp","wireSpinBtnEvents","formattedValue","maximumFractionDigits","minimumFractionDigits","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","isInteraction","beforeUpdate","numericRegex","preventHandler","iOS","currentPos","prevPos","valArray","numericObject","ignoreKeyCode","prevVal","lastIndexOf","cursorPosChanged","validateDecimalOnType","parseValue","numerictextboxObj","fireFox","parsedValue","localChange","nonZeroRegex","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","formatNumber","serverDecimalSeparator","EXPREGEXP","decimalPart","result2","version","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","rawEvent","wheelDelta","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","timeOut","touchEvent","elementFromPoint","floatLabelTypeUpdate","decrement","attrArray","validateInputType","updateSpinButton","updateClearButton","propValue","CheckBoxFilterBase","isExecuteLocal","foreignKeyQuery","filterState","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","searchHandler","searchBoxKeyUp","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","updateDataSource","infiniteUnloadParentExistPred","searchBox","inputargs","spinner","renderResponsiveFilter","dialogLabel","showMask","getListHeight","isBlanks","filterTemplateCol","filterItemTemplate","searchInput","ddlValue","caseSen","defaults","isNotEqual","itemsCnt","coll","infiniteFltrBtnHandler","generateNullValuePredicates","notifyFilterPrevEvent","addCurrSelection","existingPredicate_1","initiateFilter","isClearFilter","pred","dummyDefaults","unshift","infiniteSearchPred","firstVal","foreignQuery","parsed","predicte","addDistinct","filterChoiceCount","itemsCount","filterargs","emptyValPredicte","generatePredicate","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","isGrid","customQuery","distincts","queryGenerate","filteredColumn","dataSuccess","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","listDiv","maskItemHeight","maskList","wrapperElem","removeMask","backgroundColor","borderStyle","insertAdjacentHTML","maskLists","maskParent","infiniteRemoveElements","infiniteAppendElements","removeElem","appendElem","infiniteQuery","existQuery","runArray","executeQueryOperations","args1","processDataSource","updateResult","createFilterItems","result_1","res","selectAll","updateAllCBoxes","previousSibling","updateInfiniteManualSelectPred","updateIndeterminatenBtn","setFocus","predmdl","focusNextOrPrev","cBoxes","cBoxes_1","createCheckbox","dummyData","checkboxUid","nullCounter","selectAllValue","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","args_1","updateInfiniteUnLoadedCheckboxExistPred","getCheckedState","lastChild","selectAllParent","addCurrSelectionParent","updatePredArr","checkState","checkboxFilter","ejValue","currentFilterValue","foreignDataObj","operate","updateDateFilter","getCaseValue","bm","CellRenderer","rowChkBox","evaluate","fData","CSPTemplate","literals_1","templateID","invokeFormatter","refreshCell","newTD","cloneAttributes","arialabelText","localeStr","fromFormatter","checkWrap","rowID","isCheckBoxType","colindex","InlineEditRender","addNew","newRowPosition","getEditElement","checkLastRow","tdElement","gLen","appendChildren","isCustomFormValidation","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialog","createDialogHeader","responsiveDlgRenderer","renderResponsiveHeader","getDialogEditTemplateElement","primaryKeyValue","allowDragging","adaptiveDlgTarget","dialogEditTemplates","templateName","dialogTemp","tempDiv","setRules","formObj","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","focusElement","isFocus","preventScroll","tArgs","isInput","isIdentity","EditCellBase","removeEventHandler","BooleanEditCell","activeClasses","classNames","selectChkBox","chkState","editRow","cbChange","checkBoxChange","DropDownEditCell","isInline","dropDownClose","editCellDialogClose","ddCreated","dropdownCreated","ddBeforeOpen","dropdownBeforeOpen","ddActionComplete","dlgElement","NumericEditCell","instances","DefaultEditCell","Event","bubbles","cancelable","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","editedData","isScroll","primaryKeys","primaryKeyValues","primaryKey","virtualRow","rObj","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","applyFormValidation","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","virtualData","getCurrentEditedData","eleLength","endEditArgs","destroyElements","destroyWidgets","destroyForm","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","isLastRow","dragRow","dragRowUid","dragRowObject_1","groupedColumn","comparer1","comparer2","dropRowObject","groupedRowReorder","checkboxOnly","getGroupAggregateTemplates","closeForm","cloneRow","originalRow","cloneFrozen","frozen","needRefresh","leftrightCells","closeEditArgs","isLazyLoad","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","validationColObj","addBatchRow","prevEditedBatchCell","onBeforeCellFocused","onCellFocused","editNextValCell","dataBound","batchCancelFunction","batchCancel","restoreFocus","mouseDownElement","setCellIdx","isAddRow","validateFormObj","byClick","keyArgs","clickArgs","isContent","active","matrix","prevEditedBatchCellMatrix","crtRowIndex","byKey","isLastCellPrimaryKey","editCellFromIndex","isAdded","isInsert","isDirty","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","bulkDelete","bulkAddRow","batchSave","checkAllBox","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","dataObjects","visibleColumns","defaultData","getDefaultData","beforeBatchAddArgs","forgetPrevious","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","validation","dValues","editCellExtend","getDataByIndex","getColIndex","getCellIdx","cellEditArgs","isColored","rowObj_1","newReactTd_1","newReactTd","setChanges","rowcell","insertedRows","isSingleInsert","escapeCellEdit","generateCellArgs","successCallBack","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","editedBatchCellMatrix","editedBatchCell","addCancelWhilePaging","ARROWLEFT","ARROWRIGHT","ARROWUP","ARROWDOWN","TAB","SHIFTTAB","END","HOME","MaskedDateTime","mask","defaultConstant","hiddenMask","validCharacters","isDayPart","isMonthPart","isYearPart","isHourPart","isMinutePart","isSecondsPart","isMilliSecondsPart","monthCharacter","periodCharacter","isHiddenMask","isComplete","navigated","isDeletion","isShortYear","isDeleteKey","isDateZero","isMonthZero","isYearZero","isLeadingZero","dayTypeCount","monthTypeCount","hourTypeCount","minuteTypeCount","secondTypeCount","dateformat","getCulturedFormat","maskDateValue","validCharacterCheck","maskInputHandler","maskKeydownHandler","maskPlaceholder","getCUltureMaskFormat","formatCheck","previousHiddenMask","setDynamicValue","objectString","validChar","navigateSelection","formatText","dateAlteration","isPersist","differenceCheck","previousVal","newVal","newDateValue","handleDeletion","monthString","getCulturedValue","monthValue","monthValue_1","previousMaxDate","currentMaxDate","yearValue","periodString","periodkeys","daysAbbreviated","dayKeyAbbreviated","daysWide","dayKeyWide","daysNarrow","dayKeyNarrow","monthAbbreviated","monthWide","zeroCheck","roundOff","hiddenChar","isbackward","formatIndex","valueText","isZero","resultValue","isSegment","isDecrement","incrementValue","newMonth","DatePickerEditCell","dateanddatetimerender","datePickerEditCell","datePickerClose","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","templteCell","editCellType","alertDObj","lastTr","refreshToolbar","showConfirmDialog","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","isForceCancel","executeAction","destroyEditComponents","eventDetails","preventBatch","onActionBegin","actionCompleteFunction","actions","inputs","addRow","restrictedRequestTypes","isRestrict","isDestroyVirtualForm","formObjects","virtualFormObj","curretRowFocus","focusableEditCells","commandColCell","preventObj","newRule","mRules","frRules","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","offSet","customForm","validationForBottomRowPos","gcontent","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHearderRows","insertRow","inputClient","arrow","getEditCell","gHeight","rowsCount","rowsHeight","AddEditors","editors","gomDeva","weekdaysCaseReplace","nounCase","nominative","accusative","genitive","processHoursFunction","uk","ResponsiveDialogRenderer","sortedCols","sortPredicate","closeCustomDialog","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","filterClearBtn","getHeaderTitle","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","filterParent","isColMenu","sortColumns","sortBtnParent","filteredCols","isSort","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","closeCustomFilter","isRowResponsive","colDiv","isDialogClose","removeCustomDlgFilterEle","renderCustomFilterDialog","setTopToChildDialog","dialogEle","colMenu","outerDiv","customFilterDlg","getDialogOptions","beforeDialogClose","sortField","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","removeCustomFilterElement","custommenu","mainfilterdiv","destroyCustomFilterDialog","customEle","BaseTooltip","isStockChart","enable3D","highlightPoint","accumulationSelectionModule","isSelectedElement","highlightColor","highlightPoints","clipLocation","crosshairEnabled","templatePoint","customTemplate","tooltip3DModule","accumulationTooltipModule","svgTooltip","findPalette","isNegative","enableTextWrap","updatePreviousPoint","animationComplete","findColor","toolTipInterval","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","links","updateLinksHtml","refreshAriaAttrLabel","updateStyles","link","frag","createDocumentFragment","auxiliaryClickHandler","numericContainer","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","isLastSet","numItems","isPagerResized","focusedItem","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","classList_1","isPageAvailable","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","regx","Pager","hasParent","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","Container","Information","ExternalMsg","Page","Of","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","compile","resizePager","onFocusIn","onFocusOut","focusedTabIndexElement","getFocusedTabindexElement","dropDownPage","getDropDownPage","focusablePagerElements","getFocusablePagerElements","addFocus","focusedElement","getFocusedElement","setTabIndexForFocusLastElement","checkPagerHasFocus","changePagerFocus","setPagerFocus","setPagerContainerFocus","setPagerFocusForActiveElement","currentActivePage","offsetParent","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","tabindexElements","currentItemPagerFocus","incrementNumber","decrementNumber","lastCell","checkFirstPagerFocus","selectedClass","getClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","actionClass","pagingItem","mPrev","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","currentClass","previousElements","targetChildrens","pagerElements","element_1","tabindexElement","addFocusClass","removeFocusClass","setPageSize","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","history","pushState","uri","calculateActualWidth","actualWidth","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","showFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","totalWidth","numericItemWidth","numToHide","hideIndex","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","showItems","showItem","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","isPageSizeAll","beforeValueChange","pageSizeValue","pageSizeNum","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","onSelect","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainerDiv","previousPage","keyActions","appendToElement","handlers","complete","updateLayout","inboundChange","Selection","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","initializeSelection","fDataUpdate","getRowObj","hidePopUp","isEditing","getCurrentBatchRecordChanges","currentRecords","selectedGroupedData","enableSimpleMultiRowSelection","addRowsToSelection","selectData","isRemoved","selectedIndex","isAvailable","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","getCollectionFromIndexes","selectedDataUpdate","selectedData","selectableRowIndex","isSingleSel","prevRow","isDragged","selectRowFn","selectableRowIndex_1","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","ensureCheckboxFieldSelection","updatePersistDelete","pKey","isPresent","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","checkSelectAllClicked","clearColumnSelection","prevCIdxs","prevECIdxs","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","cancl_1","isSingleDeSel","rowDeselectObj","rowInString","rowidx","rowidxex","dataTxt","isHeaderCheckBxClick","isCellType","selectedCell","isCellSelected","previousRowCell","getCellIndex","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","cellLen","addRowCellIndex","prvRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","gBRect","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","timer1","timer2","isAutoFillSel","findNextCell","e_1","colInd","rowInd","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","strCell","fixedCells","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastCell","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","startCellIndex","trIdx","mUPTarget","closeRowCell","updateStartCellsIndex","rindex","isFrozenRow","isFrozenRight","clientRect","colWidth","enableDrag","postion","clearSelAfterRefresh","isInfiniteScroll","pkValue","rowsRemoved","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","proxy_1","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","checkSelectAll","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rIndex","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","checkToSelectAll","checkedLen","spanEle","getRecord","targetHeadCell","targetRowCell","isCheckBox","allowColumnSelection","popUpClickHandler","chkSelect","headerSelectionHandler","find","checkboxColumnIndexCheck","isJump","headerAction","thLen","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","writeText","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","lastIndex","firstIndex","applyUpDown","selectColumn","cIndex","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteHandler","resizeEndFn","isInfinitecroll","lo","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","fWidth","editTableCol","movableScrollbar","movableWidth","placeHolder","getHeightFromDirection","sibling","isWidUndefCount","isAutoResize","deAt","alertDate","deafaultDeadlineDate","openVolume","de","tzmLatn","jv","esMx","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","ENTER","ESCAPE","FOCUSED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","CARET","ITEM","HIDE","TEMPLATE_PROPERTY","FieldSettings","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","createJsonFromElement","removeChildElement","createItems","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","actionName","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","allPopup","keyType","openMenu","aEle","sli","isCMenu","canOpen","ulIndex","isIterated","isMenuVisible","item_1","wrapper_1","beforeCloseArgs","popups","getPopups","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","closeArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","getFields","lItem","elemId","uList","getField","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","targetEvent","copyObject","srcElement","liStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","actionOnScroll","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","menuType","observedOpenArgs","checkScrollOffset","animationOptions","easing","setPosition","eventArgs_1","collide","offWidth","iconCssProps","offsetEle","offsetRight","toggleVisiblity","newTop","xCollision","isVisible","showIcon","hasField","itemNavigable","itemCreating","curData","liTrgt","ulId","hdrWrapper","isDifferentElem","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","classname","isUniqueId","isText","setItem","newItem","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","wrapper1","ul1","lis","popStr","uls","targetSelctor","parent_2","isMenuOpen","pUlHeight","pElement","begin","nIndex","isCallBack","skipItem","showHideItems","hideItems","ishide","validUl","iitems","insertItems","isAfter","menuitem","itemId","parentId","enSg","nn","_m","selectedItem","headerText0","PositionReportTemplate","headerText1","M2MReportTemplate","headerText9","VolumeReportTemplate","headerText3","CostAndPricingReportTemplate","headerText4","tradingGroupAlertsReportTemplate","headerText5","HedgingOverviewReportTemplate","headerText6","TicketsReportTemplate","headerText8","TicketsLogsReportTemplate","headerText7","hypotheticalTradesTemplate","callback","$$v","$set","expression","checkCountry","countryName","pricingAreaNames","nativeOn","$event","btnDownloadFullReport","btnDownloadPositionReport","reportingView","onReportViewSelect","onCurrencyChange","currencies","onCheckPostionDefault","gridData","openColumns","m2mColumns","referenceColumns","varianceColumns","YoYColumns","onTypeChange","products","typeIndex","onCurrencyChangeM2M","currenciesM2M","onPriceAreaChange","priceArea","onCheckM2mDefault","gridMonthData","totalColumns","gridQuarterData","gridSeasonData","gridCalendarData","gridFiscalData","onYearsChange","tradingGroupYears","periodsIndex","periods","onPeriodsChange","onCurrencyChangeCAP","currenciesCAP","onPriceAreaCostChange","priceAreaCost","graphTypes","onGraphChange","performanceTypes","onCheckCostAndPriceDefault","directives","rawName","seriesData","tooltipRenderWhisker","candleMarker","medianMarker","seriesDataCost","hit","reportTradingGroupId","deadline","onCurrencyChangeTrade","currenciesTrade","onCheckTradeDefault","btnTradeReportDownload","volumeColumnes","availableYears","onYearSelect","views","onViewSelect","onCurrencyChangeHedg","currenciesHedg","onPriceAreaHedgChange","priceAreaHedg","onProductSelect","onCheckHedingDefault","fixedPriceDataGraph","openPriceDataGraph","openMarker","openGridData","dataBoundOpenPrice","fixedGridData","dataBoundFixedPrice","m2mGridData","dataBoundM2mPrice","onCurrencyChangeHypTrade","currenciesHypTrade","onPriceAreaHypoChange","priceAreaHypo","onCheckHypoDefault","impliedDataGraph","impliedGridData","dataBoundImplied","modalBtnClick","clearWhatIf","tradeLogData","excelQueryCellInfo","onTypeVolumeChange","productsVolume","onPriceAreaVolChange","priceAreaVol","btnVolumeReportDownload","thermsColumnes","thdColumnes","kWhColumnes","PercentageColumnes","MWColumnes","MWhColumnes","relativeTimeWithSingular","relativeSeconds","lv","deCh","StackedColumnsDirective","StackedColumnsPlugin","StackedColumnDirective","StackedColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","GridComponent","GridPlugin","tzm","hookCallback","hooks","setHookCallback","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","arrLen","extend","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","fun","t","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","firstTime","deprecationHandler","argLen","stack","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","DATE","WEEK","WEEKDAY","mod","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","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","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","require","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","quarter","weeks","isoWeek","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","matcher","chunk","cloneWithOffset","local","getDateOffset","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","isBefore","createAdder","dur","isAdding","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","keepOffset","toDate","inspect","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","isoWeekday","unix","toObject","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","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","DateTime","POSITIVE_INFINITY","NEGATIVE_INFINITY","datetimeInterval","getYear","getHour","endMinute","endSecond","endYear","endMonth","endDay","endHour","increaseDateTimeInterval","axisLabels","alignRangeStart","blazorCustomFormat","skeletonType","actualInterval","getDecimalInterval","sDate","intervalSize","sResult","decimalValue","sec","milliSec","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","generate","validator","passiveFocus","firstHeaderCellIndex","skipAction","onBlur","isGantt","setLastContentCellTabIndex","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","focusableToolbarItems","getFocusableToolbarItems","force","beforeArgs","clearOutline","handleFilterNavigation","inputSelector","buttonSelector","allowToPaging","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","parentCell","skipOn","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","outline","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","focusOutFromHeader","cellColIndex","cellCol","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentTable","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","inputTarget","focusVirtualElement","isKeyFocus","setFocusedElement","getFocusInfo","cellElem","focusHeader","resetFocus","getInfo","focusedColumnUid","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","matrixcs","hdrLen","handlerInstance","cellPosition","gridPosition","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","groupSortFocus","groupTextFocus","groupCancelFocus","toFrozen","focusEle","getFocusable","Matrix","allow","emptyTable","inValid","vector","columnsCount","rowColumns","currentColumnCount","indexesByKey","navigators","getCurrentFromAction","editNextRow","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","searchBlur","he","PrintUtils","printWindow","htmlContent","getHTMLContent","actualBackgroundColor","isSVG","sq","Connector","titleBorder","titleSettings","Location","Offset","ChartArea","Margin","ContainerPadding","Indexes","CornerRadius","Index","EmptyPointSettings","DragSettings","TooltipSettings","CenterLabel","StockTooltipSettings","Periods","PeriodSelectorSettings","Double","isStacking","actualDesiredIntervalsCount","niceInterval","isAutoIntervalOnBothAxis","minInterval","currentInterval","enableAutoIntervalOnZooming","paddingInterval","maxPointLength","yAxisRange","findMinMax","findAdditional","findNormal","updateActualRange","remaining","duplicateTempInterval","isPolarRadar","intervalDigits","formatDigits","formatValue","labelValue","rowDataBound","queryCellInfo","headerCellInfo","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","rowDragStartHelper","rowDragStart","rowDrag","rowDrop","printComplete","detailDataBound","batchAdd","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","beforeOpenColumnChooser","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","exportGroupCaption","uiUpdate","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","reorderComplete","rowDragAndDropComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","rowsAdded","columnDragStop","dataSourceModified","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","saveComplete","deleteComplete","dialogDestroy","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelHeaderQueryCellInfo","exportDetailDataBound","exportDetailTemplate","freezeRender","columnMenuClick","columnMenuOpen","filterOpen","filterDialogCreated","initForeignKeyColumn","showEmptyGrid","columnDataStateChange","dataStateChange","dataSourceChanged","rtlUpdated","textWrapRefresh","recordAdded","cancelBegin","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","columnChooserOpened","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","columnChooserCancelBtnClick","getFilterBarOperator","resetColumns","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","pagerRefresh","closeInline","resetVirtualFocus","beforeCheckboxRendererQuery","createVirtualValidationForm","validateVirtualForm","destroyChildGrid","stickyScrollComplete","captionActionComplete","refreshInfinitePersistSelection","refreshInfiniteEditrowindex","afterFilterColumnMenuClose","beforeCheckboxfilterRenderer","commandColumnDestroy","batchCnfrmDlgCancel","refreshResizePosition","renderResponsiveColumnChooserDiv","sr","tzl","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","ContentRender","movableRows","freezeRowElements","isLoaded","infiniteCache","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","setRowsInLazyGroup","maxBlock","maxBlocks","rowElements","startIdx","generator","getModelGenerator","pressedKey","renderHorizontalScrollbar","scrollbarHeight","setScrollbarHeight","virtualTable","virtualTrack","createContentTable","initializeContentDrop","currentMovableRows","initialPageRecords","refFrag","refHdrfrag","hdrfrag","trElement","tbdy","isGroupFrozenHdr","checkCache","isFrozenLeft","templatetoclear","templates","updateVirtualCells","blockLoad","offsets","offsets_1","bSize","isEndBlock","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","headerCellHeight","cellHeight","boxSizing","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","setDisplayNone","isFreeze","getHeaderColGroup","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","trs","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","updateCellIndex","bo","ptBr","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","getGroupedRecords","ensureRowVisibility","parentid","childId","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","childRow","fil","hyAm","Theme","getSeriesColor","getThemeColor","canvas","darkBackground","axisLabel","axisTitle","chartTitle","legendLabel","crosshairLine","crosshairFill","crosshairLabel","selectionCircleStroke","datalabelFont","crosshairLabelFont","histogram","stockEventFont","ca","doesImplementInterface","checkFor","getUpdateUsingRaf","updateFunction","isExportColumns","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","dataRowCnt","agrCnt","gLevel","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","getActualProperties","templateCompiler","validSelector","setStyleAndAttributes","copyAttr","literals","exclude","moved","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","isBottomTail","getPopupLeftPosition","parentsUntil","isID","getElementIndex","inArray","getActualPropFromColl","getUid","calculateAggregate","Global","divNode","isComplexField","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","inst","clName","addRemoveActiveClasses","distinctStringValues","getFilterMenuPostion","elementVisible","dlgWidth","getZIndexCalcualtion","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","padZero","filterObject","datePredicate","nextDate","prevObj","nextObj","predicateSt","predicateEnd","dateOnlyString","isGroupAdaptive","object","splits","newCase","getCustomDateFormat","formatvalue","getExpandedState","printMode","getPrintGridModel","printGridModel","extendObjWithFn","deep","obj1","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","getColumnModelByFieldName","transformV","replacedTv","rootElement","getScrollWidth","resetColspanGroupCaption","gridWidth","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","newColspan","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","startRowIndex","compareChanges","newArray","isChildColumn","uids","pushuid","frozenDirection","addFixedColumnBorder","addStickyColumnPosition","getCellsByTableName","getCellByColAndRowIndex","setValidationRuels","patternRegex","mtch_1","'","addBiggerDialog","dialogs","performComplexDataOperation","returnObj","duplicateMap","setDisplayValue","addRemoveEventListener","isOn","evt_1","createEditElement","registerEventHandlers","evts","removeEventHandlers","clearReactVueTemplates","generateExpandPredicates","filterCols","getPredicates","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","capitalizeFirstLetter","isDescending","sortData","isBreakLabel","getVisiblePoints","rotateTextSize","labelText","box","angleInRadians","rotatedTextWidth","rotatedTextHeight","areaWidth","inside","withIn","logWithIn","withInRange","nextPoint","mX2","mX1","mX3","xStart","xEnd","values_1","subtractThickness","thickness","degreeToLocation","radian","ChartLocation","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","polygons","i2","normal","getAccumulationLegend","cartesianlarge","cartesiansmall","valueToCoefficient","TransformToVisible","CoefficientToVector","valueToPolarCoefficient","coefficient","Mean","verticalStandardMean","verticalSquareRoot","horizontalStandardMean","horizontalSquareRoot","verticalMean","horizontalMean","PolarArc","createZoomingLabels","chartRect","findCrosshairDirection","withInBounds","getValueXByPoint","actualValue","getValueYByPoint","findClipRect","firstToLowerCase","getMinPointsDelta","xValues","seriesMin","minDelta","stackingGroups","getAnimationFunction","linear","markerAnimate","animateRectElement","currentRect","pathAnimation","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","endPath","directions","appendClipElement","clipElement","redrawElement","triggerLabelRender","isLineBreakLabels","text_1","lineBreakLabelTrim","maximumLabelWidth","textTrim","setRange","isZoomSet","getActualDesiredIntervalsCount","desiredIntervalsCount","maximumLabels","templateAnimate","chartRenderer","drawElement","sizeBullet","targetWidth","lx","ly","calculateLegendShapes","getRectLocation","outerRect","minMax","getTemplateFunction","accReactTemplate","datalabelGroup","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","calculateTemplateLabelSize","dataLabelId","tempObject","templateId","elementData","reactCallback","getFontStyle","measureElementRect","isReactCallback","findlElement","getPoint","yLength","locationX","locationY","appendElement","appendChildElement","isAnimate","forceAnimate","isRect","scatterElement","existChild","animateRedrawElement","upperQuartile","lowerQuartile","liers","isCollide","isOverlap","calculateRect","convertToHexCode","componentToHex","hex","convertHexToColor","ColorValue","colorNameToHex","exp","isRGBValue","checkColorFormat","getSaturationColor","colorCode","rgb","applyZLight","RGB","textLength","labelCollection","breakLabels","stringToNumber","containerSize","isDiv","isMinus","isDataLabelWrap","dx","calculateSize","containerWidth","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","enableGrouping","disableRangeSelector","scaleValue","selectorObject","getTitle","textWrap","titlePositionX","maximumWidth","wrapAnyWhere","textWrapAnyWhere","getUnicodeText","regexp","digit","digitSpecific","convertedText","unicodeSub","unicodeSup","blazorTemplatesReset","StackValues","RectOption","ImageOption","CircleOption","PolygonOption","Thickness","LabelLocation","PointData","ControlPoints","AccPointData","Point3D","controlPoint1","controlPoint2","getColorByValue","rbgColorValue","getGradientColor","midColor","previousColor","nextColor","previousOffset","nextOffset","percent","splitColorValueOffset","splitColor","getPercentageColor","prevColor","getPercentage","getTextAnchor","frCa","nlBe","DropDownButtonItemsDirective","DropDownButtonItemsPlugin","DropDownButtonItemDirective","DropDownButtonItemPlugin","DropDownButtonComponent","DropDownButtonPlugin","hi","CellMergeRender","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","merge","getIndexFromAllColumns","vColumnIndices","predefinedItems","isSearched","isRightToolbarMenu","gridID","preItems","isAdaptive","excludingItems","preItems_1","itemStr","localeName","isResponsiveToolbarMenuItems","responsiveToolbarItems","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","responsiveToolbarMenu","renderResponsiveToolbarpopup","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","clicked","toolbarClickHandler","viewStr","registerTemp","ID","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","getItemObject","toolbarItems_1","itemObject","gID","openResponsiveToolbarMenuPopup","newArgs","toolbarargs","tarElement","targetEle","toolbarMenuElement","getMenuItems","toolbarItems_2","getLocaleText","ResponsiveToolbarMenuItemClick","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","targetParent","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","gu","CONTROL_WRAPPER","INPUT_WRAPPER","DROP_AREA","DROP_WRAPPER","LIST_PARENT","FILE","STATUS","ACTION_BUTTONS","UPLOAD_BUTTONS","CLEAR_BUTTONS","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PROGRESS_INNER_WRAPPER","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","wrapperAttr","FORM_UPLOAD","HIDDEN_INPUT","INVALID_FILE","INFORMATION","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","multiple","uploadedFilesData","isForm","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","setControlStatus","setMultipleSelection","setRTL","reRenderFileList","browse","upload","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","autoUpload","uploadButton","listParent","internalCreateFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","pause","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","isPureReactComponent","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","clearText","dropAreaWrapper","setDropArea","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","resetForm","metaData","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","dataTransfer","clipboardData","pasteFile","kind","renderSelectedFiles","getAsFile","getSelectedFiles","liElement","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","removeUrl","emitError","formData","FormData","beforeSend","currentRequest","httpRequest","removingEventCallback","onLoad","removeCompleted","onError","removeFailed","send","postRawFile","updateFormData","customFormData","customData","updateCustomheader","request","setRequestHeader","response","getResponse","readyState","updateStatus","statusElement","getFilesFromFolder","filesEntries","validDirectoryUpload","checkDirectoryUpload","webkitGetAsEntry","isFile","files_2","fileObj","fullPath","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","entries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","readAsDataURL","onerror","directory","isModified","modifiedFilesData","progressInterval","updateInitialFileDetails","sanitizeFile","beforeSanitize","sanitizeFileName","serializeValue","currentFileName","isUTF8","htmlTagRegex","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","getFileType","webkitRelativePath","fileDetails","validatedFileSize","fileSource","dataFiles","updateSortedFileList","allowFormUpload","saveUrl","singleUpload","previousListClone","added","oldList","createParentUL","isBlank","dropFiles","extensions","extensions_1","extension","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listItem","listElement","uploadTemplateFn","templateComplier","liTempCompiler","fromElements","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","iconElement","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","textContainer","fileExtension","preventActionComplete","getSlicedName","nameElement","dataset","tail","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","loaded","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","iconEle","ajax_1","removecanceledFile","renderFailureState","requestResponse","removeProgressbar","deleteIcon","pauseButton","retryElement","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","statusText","getAllResponseHeaders","withCredentials","spinnerEle","raiseActionComplete","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","animateProgressBar","uploadTemplate","exception","isMutiple","fileIndex","chunkSize","chunkIndex","retryCount","sendRequest","totalChunk","async","contentType","chunkUploadComplete","onUploadProgress","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","updateMetaData","sendNextRequest","name_2","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","cancelButton","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","clearIcon","progressVal","totalChunks","abortIcon","sortedFileNames","sortedFilesData","sortedFileNames_1","name_3","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","contents","uploadFileCount","getFileRead","fileCount","getFileInfo","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","liIndex","beforeEventArgs","removingFiles","isLiRemoved","removingFiles_1","validUrl","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","FilesDirective","FilesPlugin","UploadedFilesDirective","UploadedFilesPlugin","UploaderComponent","UploaderPlugin","enIe","isModelChanged","aria","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","refreshSortIcons","gObj_1","initiateSort","showPopUp","enableSortMultiTouch","allowUnsort","updateAriaAttr","CLS_TAB","CLS_HEADER","CLS_BLA_TEM","CLS_CONTENT","CLS_NEST","CLS_ACTIVE","CLS_FOCUS","CLS_ICONS","CLS_ICON","CLS_ICON_TAB","CLS_ICON_CLOSE","CLS_CLOSE_SHOW","CLS_TEXT","CLS_INDICATOR","CLS_WRAP","CLS_TEXT_WRAP","CLS_TAB_ICON","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POP","CLS_TB_POPUP","CLS_HOR_NAV","CLS_POPUP_OPEN","CLS_POPUP_CLOSE","CLS_PROGRESS","CLS_IGNORE","CLS_HSCRCNT","CLS_VSCRCNT","CLS_VTAB","CLS_VLEFT","CLS_VRIGHT","CLS_HBOTTOM","CLS_FILL","TABITEMPREFIX","CLS_REORDER_ACTIVE_ITEM","TabActionSettings","TabAnimationSettings","TabItem","Tab","isIconAlone","draggableItems","tbObj","expTemplateContent","cntEle","btnCls","hdrEle","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","draggingItems","nested","prevIndex","isNested","isPopup","initRender","isSwiped","itemIndexArray","allowDragAndDrop","dragArea","updatePopAnimationConfig","tabId","renderContainer","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","scrCnt","scrCntClass","setContentHeight","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","parseObject","setCloseButton","showCloseButton","toolbarHeader","hdrItem","reRenderItems","maxId","isReplace","idList_1","getIndexFromEle","txtWrapEle","tItems","spliceArray","tbId","hidden","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","attrObj","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","isOverflow","ripEle","actEleId","prevEle","trg","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","itemCollection","prevActiveEle","newCnt","getTrgContent","extIndex","idNo","isPrevent","openEff","clsEff","setActiveBorder","trgParent","trgIndex","getEleIndex","selectTab","eleStr","templateCompile","compileElement","templateFUN","eleVal","no","findEle","tbPos","place","activeTab","changeToolbarOrientation","curActItem","headerPos","contentPos","heightAdjustMode","trgHdrEle","reorderActiveTab","bar","tbHeight","tbWidth","skipDataBind","serverDataBind","trg_1","eleTrg","refreshItemVisibility","previousItem","previousIndex","selectedContent","selectingID","selectEventArgs","tbPopObj","bindDraggable","initializeDrag","spaceKeyDown","tabKeyModule","nestedTab","clstHead","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","selectElement","changedProp","oldVal","cntItem","clearTabTemplate","isHiddenEle","strVal","clearTemplates","dragObj","itemDragStart","dropIndex","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","isSameNode","dragAction","droppedIndex","itemDragStop","tabItemDragArgs","intDestroy","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","selectingItem","selectingIndex","selectingContent","selectArgs","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","VERTICAL","DropDownButton","isPopupCreated","openPopUp","createPopupOnClick","getULElement","dropDown","getTargetElement","popupContent","isColorPicker","appendItems","hasIcon","createAnchor","beforeDisabled","afterDisabled","getPopUpElement","appendArrowSpan","setActiveElem","activeElem","attrList","popupUnWireEvents","destroyPopup","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","closeActionEvents","focusoutHandler","triggerSelect","liTarget","popupElem","splitButton","appendReactElement","beforeOpenArgs","wrapperWidth","popupRect","popupLeft","openArgs","btnModel","arrowSpan","km","DoubleRange","mStart","mEnd","isValDiff","makechanges","et","enIn","resizeClassList","suppress","Resize","tapped","isDblClk","resizeProcess","findColumn","newarray","resizeColumn","footerTable","footerTextClone","contentDivTag","footerDivTag","headerTextClone","contentTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wFooter","wContent","columnbyindex","colMaxWidth","calcTableWidth","contentwidth","refreshResizefrzCols","adaptiveClass","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","resizeEnd","resizing","updateCursor","removeEvents","updateResizeEleHeight","getColData","refreshResizeFixedCols","isAutoFitCol","frzHdrRefresh","width_2","columnsRight","refreshGroupCaptionRow","capRow","getParticularCol","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","cTable","isFrozenColResized","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","doc","ownerDocument","timeoutHandler","HIDE_CLEAR","TEXTBOX_FOCUS","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","prevOnChange","multiline","textarea","autocomplete","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","initialValue","setInitialValue","inputClassName","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","pt","mimeType","getMimeType","downloadLink","hasDownloadAttribute","isPopupBlocked","onloadend","paIn","Encoding","includeBom","emitBOM","initBOM","getByteCount","chars","validateNullOrUndefined","byte","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","charCode","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint16","byteUni","byte16","gd","ContextMenu","nl","DataLabel","errorHeight","initPrivateVariables","commonId","calculateErrorHeight","chartBackground","positiveHeight","negativeHeight","rgbValue","contrast","labelLocation","yAxisInversed","isDataLabelOverlap","showZero","labelLength","shapeRect","enableRotation","argsFont","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","visibleAxisLabelRect","rectRegion","actualRect","isDataLabelOverlapWithChartBound","isShape","textAnchor","loc1","loc2","loc3","loc4","clipWidth","clipHeight","vAxis","hAxis","labelRegion","getLabelLocation","alignmentValue","calculateAlignment","calculateRectPosition","calculatePathPosition","calculatePolarRectPosition","dataLabelOutRegion","columnRadius","chartWidth","alignmentSign","extraSpace","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","slope","intersectY","shapeElements","textNode","Legend","legendItemsId_1","visibleSeriesCollection","visibleSeriesCollection_1","legendShape","legendImageUrl","extraHeight","extraWidth","verticalArrowSpace","titleSpace","legendEventArgs","rowWidth","columnHeight","columnCount","titlePlusArrowSpace","getLegendHeight","prevLegend","previousBound","isWithinBounds","availwidth","LegendClick","changeDetection","legendClickArgs","legendText","changeSeriesVisiblity","refreshLegendToggle","redrawSeriesElements","refreshSeries","series_1","legendRegion","legendItemsId_2","checkWithinBounds","cRender","canvasRect","canvasPageUp","canvasPageDown","xPseudo","se"],"mappings":"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,QACA,WACA,mBACA,iCACA,oEACA,mEACA,yEACA,oDACA,2CACA,uBACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,cACA,gEACA,8BACA,sEACA,+FACA,+BACA,wBACA,kBACA,mBACA,mBACA,eACA,sHAEA,YAEA,wBAEA,qBACA,wBACA,OACA,YACA,8GACA,qCAMA,gBAGA,qBACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,cACA,4BACA,sEACA,+FACA,6BACA,wBACA,kBACA,qBAEA,gBAGA,mBACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,cACA,+HACA,0BACA,sEACA,+FACA,2BACA,wBACA,kBACA,mBACA,mBACA,0BACA,mDACA,oDAEA,qDACA,oDAIA,gBAIA,gBACA,kBAEA,OADA,kCACA,GAEA,gBACA,kBAEA,mBACA,aAEA,kBACA,cACA,qBACA,kCACA,YAEA,6BACA,mBACA,4BACA,sHACA,0BAEA,OACA,YACA,8GACA,kCAIA,aACA,aAEA,gBAIA,gBAGA,iBACA,kBAEA,OADA,qCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,eACA,wCACA,wBACA,qCACA,eAGA,gBAIA,gEACA,cACA,qBACA,2BACA,gBACA,eACA,uEACA,eAEA,eACA,QACA,yBACA,WACA,cAGA,kBACA,QACA,yBACA,WACA,cAGA,iCACA,4BACA,wCACA,qCACA,0CACA,oCAEA,mCACA,cACA,yCACA,aACA,YACA,4BACA,8CAGA,aACA,CACA,cACA,YACA,4BACA,6CAEA,kBAEA,oBACA,cAOA,iBACA,kCAIA,SACA,4BACA,+BAEA,uBACA,iBAEA,sBACA,iBAEA,2BACA,yBAEA,uBAUA,WAEA,yBACA,+BACA,oCACA,0BAEA,qCACA,2CAGA,gCACA,wHACA,eACA,OACA,YACA,8GACA,mCAIA,iCACA,4HACA,iCACA,+BACA,+CACA,qBACA,mBACA,uDACA,kKACA,2FAEA,sEACA,eACA,CACA,4BAEA,0BACA,CACA,CACA,kIAEA,sUACA,sTAGA,4CACA,YACA,wBACA,kFACA,oFAGA,+EACA,sFAGA,0BACA,mCAEA,wBAEA,uBACA,+DACA,sBACA,sBACA,4BACA,wBACA,8BACA,oCACA,0BACA,oCACA,yCACA,uCACA,2BACA,wBACA,8BAEA,OACA,YACA,8GACA,mCAIA,yBACA,oCAEA,4CAEA,6CAEA,2DAEA,gCACA,8BAEA,4CAEA,6CAGA,wBAEA,GADA,sBACA,2BAEA,kCACA,sDACA,qDAIA,kDACA,gDAaA,GARA,uBAEA,uDAEA,0BAEA,uDAEA,mDACA,kDACA,2EACA,2CACA,yDAEA,uDADA,2CAGA,wDAEA,yDAEA,8DAHA,2CAKA,qDAEA,6DADA,2CAGA,4DAEA,0DAEA,2DAEA,yDAEA,mDAPA,2CASA,sDAEA,oDAEA,qDAHA,2CAKA,2DACA,6CAKA,sCAEA,GADA,oCACA,2BAEA,mCAEA,sDACA,gDAGA,aACA,aACA,aACA,aACA,aACA,aACA,kBAEA,CACA,kDACA,gDAIA,aACA,aACA,aACA,aACA,aACA,aACA,cAqDA,GA9CA,gCAEA,0BACA,yIACA,2BACA,uBACA,iBACA,wCAEA,mEACA,2GACA,qGAKA,kBACA,+HACA,2BACA,uBACA,iBACA,wCAEA,mEACA,2GACA,qGAKA,8BACA,oJACA,2BACA,uBACA,iBACA,wCAEA,mEACA,2GACA,iGAOA,oDAEA,8BACA,OAEA,cAGA,sBACA,qBACA,oCACA,wBACA,cACA,iBACA,6CAKA,kDACA,2EACA,2CACA,yDAEA,uDADA,2CAGA,wDAEA,yDAEA,8DAHA,2CAKA,qDAEA,6DADA,2CAGA,4DACA,2CACA,qCACA,0DAGA,0DAEA,2DAEA,yDAEA,mDARA,4CAUA,sDAEA,oDAEA,wDAHA,4CAOA,uBAEA,0BACA,sCACA,uDAGA,oDACA,kDACA,sCAKA,oDACA,kDACA,qDAKA,0BACA,wBACA,wDAEA,0BACA,mCACA,mCACA,iCAEA,+BAEA,gCACA,8DACA,6BACA,0CACA,iCACA,gCACA,kFACA,8EAIA,iCACA,+GACA,qBACA,oCACA,OACA,YAC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ACA,kCACA,kBACA,4BACA,+CAEA,mBACA,WACA,aACA,WACA,KACA,CACA,2BACA,sBACA,2BAEA,sDACA,8DACA,+LAEA,aACA,CACA,yBACA,wBACA,SACA,kBACA,YACA,yCACA,YACA,WACA,8BACA,MACA,kBAEA,OADA,kCACA,GAGA,gBACA,gBAEA,mBACA,aAIA,kBACA,cACA,0CACA,wBACA,oBAEA,+BACA,yBACA,mBAEA,iBAIA,CACA,uBACA,sBACA,SACA,kBACA,YACA,yCACA,YACA,WACA,8HACA,MACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAIA,kBACA,cACA,0CACA,wBACA,oBAEA,+BACA,uBACA,mBAEA,kBAKA,6DACA,yDACA,iBACA,SACA,aACA,eACA,UACA,WACA,WACA,WACA,gBACA,cACA,eACA,gBACA,eACA,SACA,aACA,QACA,WACA,mBACA,iCACA,oEACA,mEACA,yEACA,oDACA,2CACA,uBACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,cACA,gEACA,8BACA,sEACA,+FACA,+BACA,wBACA,kBACA,mBACA,mBACA,eACA,sHAEA,YAEA,wBAEA,qBACA,wBACA,OACA,YACA,8GACA,qCAMA,gBAGA,qBACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,cACA,4BACA,sEACA,+FACA,6BACA,wBACA,kBACA,qBAEA,gBAGA,mBACA,kBAEA,OADA,kCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,cACA,+HACA,0BACA,sEACA,+FACA,2BACA,wBACA,kBACA,mBACA,mBACA,0BACA,mDACA,oDAEA,qDACA,oDAIA,gBAIA,gBACA,kBAEA,OADA,kCACA,GAEA,gBACA,kBAEA,mBACA,aAEA,kBACA,cACA,qBACA,kCACA,YAEA,6BACA,mBACA,4BACA,sHACA,0BAEA,OACA,YACA,8GACA,kCAIA,aACA,aAEA,gBAIA,gBAGA,iBACA,kBAEA,OADA,qCACA,GAEA,gBACA,gBAEA,mBACA,aAEA,kBACA,eACA,wCACA,wBACA,qCACA,eAGA,gBAIA,gEACA,cACA,qBACA,2BACA,gBACA,eACA,uEACA,eAEA,eACA,QACA,yBACA,WACA,cAGA,kBACA,QACA,yBACA,WACA,cAGA,iCACA,4BACA,wCACA,qCACA,0CACA,oCAEA,mCACA,cACA,yCACA,aACA,YACA,4BACA,8CAIA,aACA,CACA,cACA,YACA,4BACA,8CAIA,oBASA,OACA,gBACA,WACA,gBACA,kBACA,0BACA,cAGA,QACA,WACA,eAMA,SACA,4BACA,+BAEA,uBACA,iBAEA,sBACA,iBAEA,2BACA,yBAEA,uBAUA,WAEA,yBACA,+BACA,oCACA,0BAEA,qCACA,2CAGA,gCACA,wHACA,eACA,OACA,YACA,8GACA,mCAIA,iCACA,4HACA,iCACA,+BACA,+CACA,qBACA,mBACA,qCACA,uEACA,0HACA,oDACA,eACA,CACA,2BACA,kBAEA,0BACA,CACA,CACA,kIAEA,sUACA,sTAGA,4CACA,YACA,iBACA,2EACA,8EAEA,8EACA,mFAGA,2EACA,8EAEA,8EACA,kFAGA,0BACA,mCAEA,wBAEA,uBACA,+DACA,sBACA,sBACA,4BACA,wBACA,8BACA,0BACA,oCACA,oCACA,yCACA,uCACA,2BACA,wBACA,8BAEA,mBACA,8GACA,mCAGA,yBACA,oCAEA,4CAEA,6CAEA,2DAEA,gCACA,8BAEA,4CAEA,6CAGA,wBAWA,GAVA,sBACA,uBAEA,uDAEA,0BAEA,uDAGA,mDACA,sDACA,2EACA,2CACA,yDAEA,uDADA,2CAGA,wDAEA,yDAEA,8DAHA,2CAKA,qDAEA,6DADA,2CAGA,4DAEA,0DAEA,2DAEA,yDAEA,mDAPA,2CASA,sDAEA,oDAEA,sDAEA,sDAEA,+CAPA,2CASA,2DACA,6CAKA,sCAmDA,GAjDA,oCAGA,gCACA,0BACA,yIACA,2BACA,uBACA,iBACA,wCAEA,kEACA,oGACA,qGAKA,kBACA,+HACA,2BACA,uBACA,iBACA,wCACA,2BAEA,kEACA,oGACA,qGAKA,8BACA,oJACA,2BACA,uBACA,iBACA,wCAEA,kEA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ACA,eACA,aACA,QACA,iCACA,WACA,aACA,uCAEA,CACA,aACA,gDAEA,oDACA,mDAEA,gEACA,cACA,qBACA,2BACA,gBACA,eACA,sEACA,eAEA,iCACA,0CACA,oCACA,aACA,aAGA,SACA,4BACA,+BAEA,uBACA,iBAEA,sBACA,iBAEA,yBACA,mBACA,6CACA,0BAEA,8GACA,2CAIA,gCACA,oHACA,eACA,OACA,YACA,8GACA,mCAIA,sBAEA,uBACA,qFACA,+EAGA,gFACA,mFAGA,sIACA,mGAEA,0BACA,sCAEA,2BAEA,0BACA,6DACA,yBACA,yBACA,+BACA,2BACA,iCACA,6BACA,uCACA,6BACA,mFAEA,+BAEA,yBACA,kCAGA,wDAEA,gCACA,+BAIA,wBACA,uBAGA,sCACA,oCAEA,gCAEA,0BACA,yIACA,2BACA,uBACA,iBACA,wCAEA,mEACA,+GACA,qGAKA,kBACA,+HACA,2BACA,uBACA,iBACA,wCAEA,mEACA,+GACA,qGAKA,8BACA,oJACA,2BACA,uBACA,iBACA,wCAEA,mEACA,+GACA,kGAOA,0BACA,yBAEA,0BACA,6BACA,8BACA,+BAEA,kCAEA,8BACA,0CACA,iCACA,gCACA,kFACA,+EAKA,SACA,+EC3RqW,I,wBCQjW12D,EAAY,eACd,EACAzkC,EACAm7F,GACA,EACA,KACA,KACA,MAIa,aAAA12D,E,+BCbb,SAAUh+C,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;SAASgiC,EAAoBt+B,EAAQC,EAAeC,EAAKC,GACrD,IAAIke,EAAS,CACTngB,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,UAAW,aACfC,GAAI,CAACyB,EAAS,QAASA,EAAS,UAChCwtB,EAAG,CAAC,aAAc,eAClBhvB,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACuB,EAAS,UAAWA,EAAS,YAClCtB,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACqB,EAAS,SAAUA,EAAS,YAErC,OAAOC,EAAgBoe,EAAOne,GAAK,GAAKme,EAAOne,GAA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aAEA,CACA,uBACA,mBACA,mBACA,YACA,cAGA,iBACA,CACA,sBACA,mBACA,mBACA,YACA,aAEA,CACA,sBACA,mBACA,mBACA,YACA,cAGA,YACA,CACA,2BACA,mBACA,mBACA,YACA,aAEA,CACA,gCACA,eACA,mBACA,YACA,gBAMA,UACA,sBACA,8GAGA,mBACA,gBACA,oDAEA,gBACA,8CACA,WACA,gBACA,wBACA,qBAEA,2DACA,8CACA,4BACA,wBAEA,SACA,kCACA,2DACA,uDACA,0DACA,2TACA,8BACA,2DACA,0DACA,OACA,YACA,2DACA,uDACA,8GACA,mCAKA,6BAEA,4BACA,oDACA,2BAGA,kCAEA,uCAEA,wDACA,4CACA,2BAEA,sCACA,2DACA,uDACA,0DACA,qUACA,8BACA,2DACA,0DACA,OACA,YACA,2DACA,uDACA,8GACA,mCAIA,gCACA,2DACA,6DAEA,gCACA,2DACA,8FAEA,sCACA,uGACA,kBACA,SACA,2DACA,2CACA,4BACA,sDAEA,yCAGA,mBACA,uEAGA,2BACA,SACA,oBACA,eACA,oFAEA,UAEA,yCACA,uDACA,8PACA,kBACA,2DACA,+CACA,gBACA,uDAEA,qBACA,mBACA,2BACA,qBACA,8CACA,oCAEA,wBAEA,gDAIA,sEAGA,mBACA,uDACA,2DACA,aACA,uDACA,gDAIA,+BACA,sBACA,yBAEA,4BACA,cACA,qBACA,UACA,uBACA,iBACA,iBACA,kCACA,eAGA,0BACA,kHACA,oDACA,kFACA,2CACA,8JACA,qDACA,uMACA,0DAGA,wBACA,+CACA,gBACA,0DCva6X,I,wBCQzXkpC,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnBX,EAAS,WAAa,IAAIqzD,EAAInxG,KAASoxG,EAAGD,EAAIE,eAAmBh1E,EAAG80E,EAAIG,MAAMj1E,IAAI+0E,EAAG,OAAO/0E,EAAG,OAAO,CAACA,EAAG,OAAO,CAACznB,MAAM,CAAC,IAAM,KAAK,CAACynB,EAAG,MAAM,CAACk1E,YAAY,4BAA4BC,YAAY,CAAC,QAAU,OAAO,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AAO,QAAUu8F,EAAIkkM,YAAY,UAAY,YAAYh5Q,EAAG,WAAW,CAACznB,MAAM,CAAC,WAAa,MAAM,QAAUu8F,EAAImkM,WAAW,UAAY,YAAYj5Q,EAAG,WAAW,CAACznB,MAAM,CAAC,MAAQ,YAAY,QAAUu8F,EAAIokM,iBAAiB,UAAY,aAAa,IAAI,IAAI,MAAM,IAChjO,EAAkB,G,kWC6GtB,yBACA,yBACA,yBACA,yBAEA,yBACA,yBACA,mBACA,QACA,cAEA,8BACA,0IACA,qBAEA,OACA,YACA,8GACA,mCAKA,gBACA,OAEA,aACA,YAEA,aACA,mDACA,6EACA,iCACA,0BACA,2BACA,6BACA,4BACA,2BACA,oBACA,mBACA,sBACA,qBACA,oBACA,sBACA,qBACA,wBACA,uBACA,sBACA,wBACA,6CACA,YACA,UACA,cACA,gBACA,WACA,iCACA,WACA,oCACA,eACA,yCACA,oBACA,mBACA,YACA,cAEA,cACA,CACA,yCACA,oBACA,mBACA,YACA,aAEA,CACA,8BACA,sBACA,mBACA,YACA,aAEA,CACA,mBACA,mBACA,mBACA,YACA,aAEA,CACA,mBACA,mBACA,mBACA,YACA,cAGA,aACA,CACA,wCACA,oBACA,mBACA,YACA,aAEA,CACA,6BACA,sBACA,mBACA,YACA,aAEA,CACA,kBACA,0BACA,mBACA,YACA,aAEA,CACA,kBACA,mBACA,mBACA,YACA,cAGA,YACA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,iBACA,mBACA,mBACA,YACA,cAGA,kBACA,CACA,uBACA,mBACA,mBACA,YACA,aAEA,CACA,uBACA,mBACA,mBACA,YACA,aAEA,CACA,sBACA,sBACA,mBACA,YACA,cAGA,oBAGA,SACA,6BACA,6BACA,4EAGA,4BACA,kHACA,wCACA,UACA,sCAOA,8BACA,4CACA,gBACA,iEAKA,yBACA,sBACA,oHACA,8CAIA,8BACA,uCACA,6DACA,gCAGA,gCAEA,sCACA,gCAGA,uBACA,WAEA,kCACA,sDACA,uDACA,mQACA,gDACA,oCACA,sCACA,0CACA,wCACA,sCACA,mBACA,qBACA,6BAEA,wBAEA,mDAKA,sEAIA,kDAEA,yDAEA,yCAEA,8DAEA,8CAEA,8DAEA,8CAEA,8DAEA,+CAKA,6CAIA,oHACA,wDACA,sDACA,0DAGA,OACA,YACA,sDACA,uDACA,8GACA,mCAKA,iCAEA,oEAEA,MAEA,kLACA,qLACA,wLACA,qLAIA,+BACA,gCACA,kCACA,gCACA,mCAIA,8BACA,2FACA,8FACA,oGACA,iGACA,+FACA,8BACA,uFACA,0FACA,gGACA,6FACA,2FACA,8BACA,uFACA,0FACA,gGACA,6FACA,2FACA,yBACA,sFACA,yFACA,+FACA,4FACA,0FACA,8BACA,2FACA,8FACA,oGACA,iGACA,gGAEA,0FACA,6FACA,mGACA,gGACA,8FAEA,+BACA,gCACA,kCACA,gCACA,mCAKA,0BAEA,wCACA,gCAIA,0CAEA,QACA,gCAEA,iCACA,2BACA,mCACA,iCACA,0DAEA,mCACA,+BACA,yDAGA,6JACA,oDACA,kFACA,2CACA,8JACA,qDACA,gKACA,0DAGA,qBACA,sDACA,uDACA,+RACA,8BACA,sDACA,0DAEA,OACA,YACA,8GACA,+BACA,sDACA,2DAIA,0BACA,0BAGA,mBACA,gBACA,+CAEA,gBACA,8CACA,WACA,gBACA,wBACA,qBAEA,iBACA,UACA,yBACA,6GAEA,qBACA,+GAGA,SACA,6EACA,wHCrhBwX,MCQpX,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIpkM,EAAInxG,KAASoxG,EAAGD,EAAIE,eAAmBh1E,EAAG80E,EAAIG,MAAMj1E,IAAI+0E,EAAG,OAAO/0E,EAAG,OAAO,CAACA,EAAG,OAAO,CAACznB,MAAM,CAAC,IAAM,KAAK,CAACynB,EAAG,MAAM,CAACk1E,YAAY,4BAA4BC,YAAY,CAAC,QAAU,OAAO,SAAW,aAAa,CAACn1E,EAAG,MAAM,CAACznB,MAAM,CAAC,GAAK,iBAAiBynB,EAAG,MAAM,CAACk1E,YAAY,YAAY,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,sEAAsE,CAACl1E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BACA,qBACA,gBACA,cACA,QACA,2BACA,2EACA,mCACA,4CACA,2BACA,gBACA,OAGA,SAEA,kCACA,mDACA,yCACA,uDACA,gBACA,wCAGA,gCACA,4HACA,+CACA,yCACA,uDACA,UACA,2BAEA,4BAGA,0BAEA,oFACA,0CACA,oCAEA,gDACA,wCAEA,oCACA,8CACA,qCAKA,iCACA,kCACA,oFACA,4CACA,0CACA,wDACA,wDACA,8DAGA,uCACA,4HACA,uCACA,mDACA,yCACA,uDACA,4BAEA,0BACA,yBAEA,4BACA,4HACA,+CACA,yCACA,uDACA,2BACA,oBAEA,yBACA,kBACA,4HACA,+CACA,yCAEA,mCACA,oBAEA,0BACA,oCAEA,uBACA,WAEA,gCAEA,4HACA,sCACA,6CACA,uDAEA,0CAGA,yCACA,uDACA,uDACA,+OACA,2EACA,uBACA,oBACA,gBAEA,wBAEA,mDAIA,sEAEA,uDACA,0DAEA,OACA,YACA,uDACA,uDACA,8GACA,mCAIA,uBACA,6BACA,UACA,KACA,oDACA,WACA,oCACA,yCACA,mCACA,wBACA,yBACA,4DACA,6DACA,6DAEA,gCAEA,iCACA,qCACA,mCACA,wBACA,yBACA,wDACA,yDACA,yDAEA,2BAIA,eACA,CACA,SAEA,8BACA,8BAEA,YACA,YACA,cAGA,yBACA,MACA,2CAYA,OAVA,EADA,WACA,gCACA,aACA,kCACA,YACA,iCACA,cACA,mCAEA,iCAEA,GAEA,iCACA,WACA,kBACA,oBACA,sBACA,aACA,kBACA,oBACA,uBAEA,kBACA,oBACA,uBAGA,qBACA,uDACA,uDAEA,qQACA,8BACA,uDACA,0DAEA,OACA,YACA,8GACA,+BACA,2DAIA,0BACA,wBACA,yDAGA,mBACA,gBACA,gDAEA,gBACA,8CACA,WACA,gBACA,wBACA,qBAEA,kBACA,UACA,6BACA,2GAEA,yBAEA,6GAEA,yBACA,+GAEA,mBACA,2BACA,8CAGA,SACA,6EACA,wHCzfmY,MCQ/X,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IA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EAAI+nM,uBAAuB,KAAK78Q,EAAG,MAAM,CAACk1E,YAAY,OAAO,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,iBAAiB,CAACl1E,EAAG,WAAW,CAACigC,IAAI,iBAAiB1nD,MAAM,CAAC,WAAau8F,EAAIgoM,cAAc,GAAK,iBAAiB,UAAYhoM,EAAIioM,wBAAwB,KAAK/8Q,EAAG,MAAM,CAACk1E,YAAY,OAAO,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,WAAW,CAACl1E,EAAG,WAAW,CAACigC,IAAI,eAAe1nD,MAAM,CAAC,WAAau8F,EAAIkoM,YAAY,GAAK,eAAe,UAAYloM,EAAImoM,sBAAsB,OAAOj9Q,EAAG,MAAM,CAACznB,MAAM,CAAC,GAAK,uBACzxJ,GAAkB,GC4FtB,yBACA,yBACA,yBACA,yBACA,yBACA,yBAEA,QACA,6BACA,qBAEA,gBACA,OACA,QACA,+BACA,gBACA,iBACA,eACA,UACA,cACA,gBACA,WACA,aACA,qBACA,uBACA,sBACA,mBACA,oBACA,kBACA,uBACA,sBACA,qBACA,wBACA,6CACA,eACA,gBACA,iBACA,kBACA,kBACA,YACA,WACA,WACA,4HAGA,QACA,WACA,WACA,4HAGA,gBACA,WACA,kBACA,8HAEA,cACA,qBACA,UACA,+HAEA,aACA,CAIA,eACA,iBACA,8HACA,+HAEA,WACA,yBACA,4EACA,oBAGA,mBACA,gBACA,mDAEA,gBACA,gDAEA,wDAEA,SACA,6BACA,oDACA,6BACA,yKAGA,kCACA,mBACA,oDAEA,+LAIA,gCACA,4HACA,gDACA,UACA,2JAEA,4JAGA,6BACA,uBACA,6BACA,yBACA,4BACA,4BACA,MACA,MAIA,IAFA,QAEA,cACA,UACA,qCACA,wCACA,IAEA,6CAEA,iCACA,4HACA,uCACA,oDAEA,4JAGA,yBACA,4HAEA,4BACA,4HACA,+EACA,gDAEA,kHAGA,yBACA,4HACA,gDAEA,kIAGA,uCACA,wHACA,4FAEA,0KAIA,gDACA,0DACA,uDACA,oOACA,sJACA,kBACA,mBACA,eACA,mBACA,2BACA,+BACA,qBAEA,wBAEA,oDAIA,uEAEA,kDAEA,0DACA,0DACA,mBACA,0DACA,uDACA,YACA,+CAIA,qBACA,0DACA,uDACA,8DACA,gSACA,8BACA,0DACA,0DAEA,OACA,YACA,8GACA,+BACA,0DACA,2DAIA,sBAMA,aAJA,iCACA,mCACA,+BACA,2BACA,mBACA,OACA,SACA,+CAEA,WACA,gCAIA,aADA,4BACA,oBACA,GACA,SACA,gDAEA,YACA,iCAOA,IAHA,UACA,MAEA,0CACA,gGACA,qCAEA,gGACA,qCAGA,6CACA,+FACA,oCAEA,+FACA,oCAGA,wEACA,kBACA,eACA,CAIA,iBACA,kBAIA,aAEA,eACA,CAIA,0BACA,mBAMA,eACA,CAIA,yBACA,kBAEA,iBACA,WACA,cAIA,YACA,2BACA,4BACA,0BACA,wBACA,cACA,4BAEA,oEACA,wBACA,cACA,8BAKA,8BACA,4BACA,yCAEA,4BAEA,+BACA,6BACA,0CAEA,6BAEA,6BACA,2BACA,wCAEA,2BAEA,sBAIA,IAHA,gDACA,WACA,KACA,aACA,WACA,KAEA,aAEA,WADA,gCACA,IAEA,IAEA,UAEA,8BAGA,4BACA,cACA,qBACA,UACA,uBACA,iBACA,iBACA,qCAGA,6BAKA,UACA,oBACA,0HAEA,0BACA,6GAEA,yBACA,+GAGA,SACA,uCAEA,mBACA,2BACA,+CC5doY,MCQhY,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIu8F,EAAInxG,KAASoxG,EAAGD,EAAIE,eAAmBh1E,EAAG80E,EAAIG,MAAMj1E,IAAI+0E,EAAG,OAAO/0E,EAAG,MAAM,CAACznB,MAAM,CAAC,GAAK,gBAAgB,CAACynB,EAAG,MAAM,CAACk1E,YAAY,UAAU,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,MAAMC,YAAY,CAAC,QAAU,MAAM58F,MAAM,CAAC,GAAK,gBAAgB,CAACynB,EAAG,MAAM,CAACk1E,YAAY,YAAY,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,YAAY,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,iEAAiE,CAACl1E,E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EAAI6oM,YAAYpF,MAAW,CAACzjM,EAAImC,GAAG,gCAAgC,GAAGj3E,EAAG,MAAM,CAACznB,MAAM,CAAC,GAAK,uBACr3K,GAAkB,GCyGtB,yBACA,yBACA,yBACA,yBACA,yBACA,yBAEA,QACA,6BACA,qBAEA,gBACA,OACA,QACA,yCACA,gBACA,iBACA,eACA,mBACA,aACA,UACA,sBACA,gBACA,WACA,uBACA,sBACA,oBACA,mBACA,oBACA,kBACA,uBACA,sBACA,qBACA,oBACA,wBACA,6CACA,eACA,qBACA,gBACA,iBACA,kBACA,kBACA,YACA,WACA,WACA,4HAGA,QACA,WACA,WACA,4HAGA,gBACA,WACA,kBACA,8HAEA,cACA,qBACA,UACA,+HAEA,aACA,CAIA,eACA,iBACA,8HACA,+HAEA,WACA,yBACA,4EAEA,kBACA,WACA,2BACA,kBACA,eACA,kCACA,oBAIA,mBACA,0CACA,wCAEA,gBACA,mDAEA,gBACA,8CACA,WACA,gBACA,wBACA,qBAEA,uDACA,iDAEA,SACA,6BACA,qDACA,8BACA,4KACA,0KAGA,kCACA,mBACA,qDAEA,iMACA,+LAIA,gCACA,4HACA,iDAEA,+JACA,4JAIA,uBACA,gCACA,YAGA,6BACA,uBACA,6BACA,yBACA,4BACA,4BACA,MACA,MAIA,IAFA,QAEA,cACA,UACA,qCACA,wCACA,IAEA,6CAEA,+BACA,4HACA,uCACA,SAEA,4JACA,yJAEA,yBACA,4HACA,iDACA,KAEA,qIAEA,kIAEA,4BACA,4HACA,+EACA,iDACA,KAEA,oHAEA,iHAEA,yBACA,SAEA,wHACA,kIACA,qDACA,iIAEA,2CAEA,wHACA,8EACA,KAEA,8JACA,2JAEA,gDAEA,0DACA,uDACA,oHACA,4BACA,mBACA,yBACA,8CAIA,oOACA,sJACA,kBACA,mBACA,qBACA,mBACA,2BACA,+BACA,eACA,kDAEA,0DACA,0DACA,mBACA,0DACA,uDACA,YACA,+CAIA,oDAEA,0DACA,uDACA,gPACA,sJACA,kBACA,+BAEA,wBAEA,mDAIA,sEAEA,0DACA,0DACA,mBACA,0DACA,uDACA,YACA,+CAIA,qBACA,0DACA,uDACA,qDACA,yQACA,8BACA,0DACA,0DAEA,OACA,YACA,8GACA,+BACA,0DACA,2DAIA,sBAOA,aALA,iCACA,mCACA,+BAEA,4BACA,oBACA,OACA,SACA,gDAEA,YACA,iCAIA,qEACA,kBACA,eACA,CACA,iBACA,kBAGA,eACA,eACA,CACA,0BACA,mBAIA,YACA,eACA,CACA,4BACA,kBAEA,iBACA,WACA,cAIA,YACA,2BACA,4BACA,0BACA,wBACA,cACA,4BAEA,oEACA,wBACA,cACA,8BAEA,4BAKA,aAHA,uBAEA,yBACA,MACA,OACA,SACA,kCAEA,cACA,8BAIA,aADA,2BACA,MACA,GACA,SACA,kCAEA,cACA,gCAIA,qEACA,YAEA,yBACA,kCAEA,4BACA,0BACA,uCAEA,0BAEA,8BACA,4BACA,yCAEA,4BAEA,+BACA,6BACA,0CAEA,6BAEA,6BACA,2BACA,wCAEA,2BAEA,sBAIA,IAHA,gDACA,WACA,KACA,aACA,WACA,KAEA,aACA,gCACA,eACA,cACA,eACA,oCAEA,eAEA,UAEA,8BAEA,4BACA,cACA,qBACA,UACA,uBACA,iBACA,iBACA,qCAGA,yBAEA,wIAEA,kCACA,0DACA,+IACA,mBACA,gDAIA,UACA,oBACA,0HAEA,8BACA,6GAEA,yBACA,+GAGA,SACA,uCAEA,mBACA,2BACA,+CC3iBsY,MCQlY,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIu8F,EAAInxG,KAASoxG,EAAGD,EAAIE,eAAmBh1E,EAAG80E,EAAIG,MAAMj1E,IAAI+0E,EAAG,OAAO/0E,EAAG,MAAM,CAACk1E,YAAY,OAAO,CAACl1E,EAAG,MAAM,CAACznB,MAAM,CAAC,GAAK,wBAAwBynB,EAAG,MAAM,CAACk1E,YAAY,eAAe,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,OAAO,CAACl1E,EAAG,MAAM,CAACk1E,YAAY,WAAW,CAACl1E,EAAG,WAAW,CAACigC,IAAI,OAAO1nD,MAAM,CAAC,WA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A,wBACA,yBACA,+BACA,kBACA,kBACA,qBACA,iBACA,sBACA,kBACA,6CACA,YACA,CACA,gBACA,mBACA,mBACA,YACA,aAEA,CACA,gBACA,mBACA,mBACA,YACA,aAEA,CACA,eACA,kBACA,mBACA,YACA,cAGA,aACA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,gBACA,kBACA,mBACA,YACA,cAGA,aACA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,gBACA,kBACA,mBACA,YACA,cAGA,gBACA,CACA,oBACA,mBACA,mBACA,YACA,aAEA,CACA,oBACA,mBACA,mBACA,YACA,aAEA,CACA,mBACA,kBACA,mBACA,YACA,cAGA,aACA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,iBACA,mBACA,mBACA,YACA,aAEA,CACA,gBACA,kBACA,mBACA,YACA,cAGA,YACA,CACA,gBACA,mBACA,mBACA,YACA,aAEA,CACA,gBACA,mBACA,mBACA,YACA,aAEA,CACA,eACA,kBACA,mBACA,YACA,cAGA,oBACA,CACA,wBACA,mBACA,mBACA,YACA,aAEA,CACA,uBACA,kBACA,mBACA,YACA,cAGA,WACA,oCACA,oBAKA,SACA,6BACA,kDACA,6BACA,4CAGA,uCACA,2HACA,6CAEA,iCACA,mBACA,kDAEA,kEAIA,uCACA,2HACA,8CAEA,+BAGA,2BAGA,iCACA,gBACA,oCACA,UAEA,oHAKA,gBACA,gCACA,UAEA,cADA,EACA,0GAEA,sGAKA,gBACA,gCACA,UAEA,cADA,EACA,0GAEA,sGAIA,gBACA,mCACA,UAEA,cADA,EACA,0GAEA,uGAOA,oCACA,+CACA,yFACA,kBACA,yDACA,uDACA,0CACA,0DACA,kCACA,kCACA,wCACA,gCACA,0CACA,kCACA,qBACA,QACA,cAEA,mBAEA,mBACA,yDACA,uDACA,YACA,+CAIA,oCACA,yDACA,uDACA,4JACA,8BACA,yDACA,0DACA,OACA,YACA,yDACA,uDACA,8GACA,mCAIA,kCAGA,4BACA,cACA,qBACA,UACA,uBACA,iBACA,iBACA,kCACA,eAGA,4BAGA,wBACA,kCAIA,2BACA,qCAEA,0BACA,qCAGA,mBACA,+CACA,gBACA,WAEA,gBACA,8CACA,WACA,gBACA,wBACA,qBAEA,uDACA,kBACA,qBACA,6BAGA,YAGA,SACA,qCC3c2X,MCQvX,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCkBf,yBACA,QACA,8BACA,mBACA,iFACA,kDACA,2DAGA,gBACA,OACA,sCACA,yBACA,qCACA,sCACA,4BACA,yCACA,iCACA,mCACA,gCACA,eACA,uGACA,WACA,SACA,MACA,cACA,kCACA,OACA,UACA,aAIA,6BACA,OACA,UACA,cAIA,gCACA,OACA,UACA,cAIA,wCACA,OACA,UACA,cAIA,4CACA,OACA,UACA,cAIA,yCACA,OACA,UACA,cAIA,iCACA,OACA,UACA,cAIA,qCACA,OACA,UACA,cAIA,sCACA,OACA,UACA,gBAMA,SACA,iCACA,4HACA,2BACA,uBACA,iBACA,2CAEA,OACA,YACA,8GACA,uBAMA,yCACA,sFACA,kBAEA,2CACA,gFAEA,mBACA,8GACA,wBAKA,UACA,uBACA,gDCjKoX,MCQhX,I,UAAY,eACd,GACA1jB,EACAm7F,GACA,EACA,KACA,WACA,OAIa,gB,+BCdb,SAAU10G,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIq/C,EAAQ,CACR19C,GAAI,qCAAqCvB,MAAM,KAC/CwB,EAAG,iCAAiCxB,MAAM,KAC1CyB,GAAI,iCAAiCzB,MAAM,KAC3C0B,EAAG,iCAAiC1B,MAAM,KAC1C2B,GAAI,iCAAiC3B,MAAM,KAC3C4B,EAAG,6BAA6B5B,MAAM,KACtC6B,GAAI,6BAA6B7B,MAAM,KACvC8B,EAAG,iCAAiC9B,MAAM,KAC1C+B,GAAI,iCAAiC/B,MAAM,KAC3CgC,EAAG,wBAAwBhC,MAAM,KACjCiC,GAAI,wBAAwBjC,MAAM,MAKtC,S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","file":"js/chunk-473de7e3.0e12d5a7.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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusAlert.vue?vue&type=style&index=0&id=8cc5df1a&prod&lang=css\"","//! 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset);\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\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 // eslint-disable-next-line\n basicISOString = /^\\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 if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (((this.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Property, ChildProperty, Complex, Collection, getValue, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { StackValues, RectOption, appendChildElement, appendClipElement } from '../../common/utils/helper';\nimport { firstToLowerCase, CircleOption, getColorByValue } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Border, Font, Margin, Animation, EmptyPointSettings, CornerRadius, Connector, DragSettings } from '../../common/model/base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Offset } from '../../common/model/base';\nimport { seriesRender } from '../../common/model/constants';\nimport { getVisiblePoints, setRange } from '../../common/utils/helper';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Configures the data label in the series.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], DataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"format\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Hide')\n ], DataLabelSettings.prototype, \"labelIntersectAction\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Configures the marker in the series.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"isFilled\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(true)\n ], MarkerSettings.prototype, \"allowHighlight\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * Configures the pareto in the series.\n */\nvar ParetoOptions = /** @class */ (function (_super) {\n __extends(ParetoOptions, _super);\n function ParetoOptions() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ParetoOptions.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], ParetoOptions.prototype, \"width\", void 0);\n __decorate([\n Property('0')\n ], ParetoOptions.prototype, \"dashArray\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], ParetoOptions.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], ParetoOptions.prototype, \"showAxis\", void 0);\n return ParetoOptions;\n}(ChildProperty));\nexport { ParetoOptions };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar Points = /** @class */ (function () {\n function Points() {\n /** point symbol location. */\n this.symbolLocations = null;\n /** point region. */\n this.regions = null;\n /** point percentage value. */\n this.percentage = null;\n /** point region data. */\n this.regionData = null;\n /** To know the point is selected. */\n this.isSelect = false;\n /** point marker. */\n this.marker = {\n visible: false\n };\n /**\n * To identify point y value with in the range.\n *\n * @private\n */\n this.isPointInRange = true;\n /** vertical error value for the point. */\n this.verticalError = null;\n /** vertical negative error value for the point. */\n this.verticalNegativeError = null;\n /** horizontal error value for the point. */\n this.horizontalError = null;\n /** horizontal negative error value for the point. */\n this.horizontalNegativeError = null;\n /** vertical positive error value for the point. */\n this.verticalPositiveError = null;\n /** horizontal positive error value for the point. */\n this.horizontalPositiveError = null;\n }\n return Points;\n}());\nexport { Points };\n/**\n * Defines the behavior of the Trendlines\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n Trendline.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.points = series.points;\n }\n chart.trendLineModule.initDataSource(this);\n chart.visibleSeriesCount++;\n };\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * Configures Error bar in series.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * Error bar settings\n *\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n __decorate([\n Property('')\n ], ErrorBarSettings.prototype, \"errorBarColorMapping\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Defines the common behavior of Series and Technical Indicators\n */\nvar SeriesBase = /** @class */ (function (_super) {\n __extends(SeriesBase, _super);\n function SeriesBase() {\n /**\n * The DataSource field that contains the x value.\n * It is applicable for series and technical indicators\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rangeColorPoints = [];\n _this.isAdvancedColor = undefined;\n /** @private */\n _this.currentViewData = [];\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.seriesType = 'XY';\n _this.isRectTypeSeries = false;\n return _this;\n }\n /**\n * Process data for the series.\n *\n * @hidden\n */\n SeriesBase.prototype.processJsonData = function () {\n var i = 0;\n var point = new Points();\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n if (this instanceof Series) {\n if ((this.type === 'Waterfall' || this.type === 'Histogram')) {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.currentViewData, null, true), this);\n }\n if (this.category === 'Pareto') {\n if (this.type === 'Line') {\n this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.currentViewData, this);\n }\n }\n this.isRectTypeSeries = this.type.indexOf('Column') > -1 || this.type.indexOf('Bar') > -1\n || this.type.indexOf('Histogram') > -1;\n }\n var len = (this.currentViewData || []).length;\n this.points = [];\n this.xMin = Infinity;\n this.xMax = -Infinity;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n this.sizeMax = -Infinity;\n this.getSeriesType();\n if (this.xAxis.valueType === 'Category') {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n this.pushCategoryData(point, i, point.x);\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n this.rangeColorsInterior(point);\n i++;\n }\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n if (!isNullOrUndefined(point.x) && point.x !== '') {\n point.x = new Date(DataUtil.parse.parseJson({ val: point.x }).val);\n if (this.xAxis.valueType === 'DateTime') {\n point.xValue = Date.parse(point.x.toString());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.chart.isBlazor ? this.pushCategoryData(point, i, Date.parse(point.x.toString()).toString()) :\n this.pushCategoryData(point, i, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n //this.rangeColorsInterior(point);\n }\n else {\n point.visible = false;\n }\n i++;\n }\n }\n else {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n point.xValue = point.x;\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n if (this instanceof Series && !(this.chart.stockChart && this.xAxis.valueType === 'DateTimeCategory')) {\n if (this.type.indexOf('Spline') > -1 || (this.drawType.indexOf('Spline') > -1 && this.chart.chartAreaType === 'PolarRadar')) {\n var isArea = (this.type.indexOf('Area') > -1 || this.drawType.indexOf('Area') > -1);\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n else if (this.type.indexOf('Histogram') > -1 && (this.xAxis.maximum || this.xAxis.minimum)) {\n this.chart['histogramSeriesModule'].calculateBinValues(this);\n }\n if (this.type.indexOf('Histogram') > -1 && this.points.length === 1) {\n this.xMin = this.xMin - this.histogramValues.binWidth;\n this.xMax = this.xMax + this.histogramValues.binWidth;\n }\n }\n };\n SeriesBase.prototype.rangeColorsInterior = function (point) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.chart.visibleSeries.length === 1 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n if (!this.rangeColorPoints[point.interior]) {\n this.rangeColorPoints[point.interior] = [];\n }\n else if (this.rangeColorPoints[point.interior] !== undefined) {\n this.rangeColorPoints[point.interior].push(point);\n }\n }\n };\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\n point.series = this;\n // To find the min, max for the axis range.\n this.xMin = Math.min(this.xMin, point.xValue);\n this.xMax = Math.max(this.xMax, point.xValue);\n this.xData.push(point.xValue);\n };\n /** @private */\n SeriesBase.prototype.dataPoint = function (i, textMappingName, xName) {\n this.points[i] = new Points();\n var point = this.points[i];\n var currentViewData = this.currentViewData[i];\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData);\n point.high = getObjectValueByMappingString(this.high, currentViewData);\n point.low = getObjectValueByMappingString(this.low, currentViewData);\n point.open = getObjectValueByMappingString(this.open, currentViewData);\n point.close = getObjectValueByMappingString(this.close, currentViewData);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData);\n if (this instanceof Series) {\n if (this.errorBar.visible) {\n point.errorBarColor = getObjectValueByMappingString(this.errorBar.errorBarColorMapping, currentViewData);\n point.verticalError = typeof this.errorBar.verticalError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalError, currentViewData) : this.errorBar.verticalError;\n point.horizontalError = typeof this.errorBar.horizontalError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalError, currentViewData) : this.errorBar.horizontalError;\n point.verticalNegativeError = typeof this.errorBar.verticalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalNegativeError, currentViewData) : this.errorBar.verticalNegativeError;\n point.verticalPositiveError = typeof this.errorBar.verticalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalPositiveError, currentViewData) : this.errorBar.verticalPositiveError;\n point.horizontalNegativeError = typeof this.errorBar.horizontalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalNegativeError, currentViewData) : this.errorBar.horizontalNegativeError;\n point.horizontalPositiveError = typeof this.errorBar.horizontalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalPositiveError, currentViewData) : this.errorBar.horizontalPositiveError;\n }\n point.y = getObjectValueByMappingString(this.yName, currentViewData);\n point.size = getObjectValueByMappingString(this.size, currentViewData);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData);\n if (this.isAdvancedColorSupported()) {\n this.rangeColorName = this.colorName.length > 0 ? this.colorName : this.yName;\n point.colorValue = getObjectValueByMappingString(this.rangeColorName, currentViewData);\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (isNullOrUndefined(this.isAdvancedColor)) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n this.isAdvancedColor = true;\n }\n else {\n this.isAdvancedColor = false;\n }\n }\n return this.isAdvancedColor;\n };\n SeriesBase.prototype.getPointFillColor = function (pointFill, value) {\n var color = pointFill;\n if (value && this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0) {\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var rangeMap = _a[_i];\n if (value >= rangeMap.start && value <= rangeMap.end) {\n if (rangeMap.colors.length > 1) {\n color = getColorByValue(rangeMap, value);\n }\n else {\n color = rangeMap.colors[0];\n }\n }\n }\n }\n return color;\n };\n SeriesBase.prototype.getObjectValue = function (mappingName, data) {\n return data[mappingName];\n };\n /**\n * To set empty point value based on empty point mode\n *\n * @private\n */\n SeriesBase.prototype.setEmptyPoint = function (point, i) {\n if (!this.findVisibility(point)) {\n point.visible = true;\n return null;\n }\n point.isEmpty = true;\n var mode = this instanceof Series && point.isPointInRange ? this.emptyPointSettings.mode : 'Drop';\n switch (mode) {\n case 'Zero':\n point.visible = true;\n if (this instanceof Series && this.seriesType.indexOf('HighLow') > -1) {\n point.high = point.low = 0;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = point.close = 0;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = 0;\n }\n break;\n case 'Average':\n if (this instanceof Series) {\n if (this.seriesType.indexOf('HighLow') > -1) {\n point.high = (isNullOrUndefined(point.high) || isNaN(+point.high)) ? this.getAverage(this.high, i) : point.high;\n point.low = (isNullOrUndefined(point.low) || isNaN(+point.low)) ? this.getAverage(this.low, i) : point.low;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = (isNullOrUndefined(point.open) || isNaN(+point.open)) ? this.getAverage(this.open, i) : point.open;\n point.close = (isNullOrUndefined(point.close) || isNaN(+point.close)) ? this.getAverage(this.close, i) :\n point.close;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = this.getAverage(this.yName, i);\n }\n }\n point.visible = true;\n break;\n case 'Drop':\n case 'Gap':\n this.yData[i] = null;\n point.visible = false;\n break;\n }\n };\n SeriesBase.prototype.findVisibility = function (point) {\n var type = this instanceof Series ? this.seriesType : 'HighLowOpenClose';\n var yValues;\n var yAxisMin = this.yAxis.minimum;\n var yAxisMax = this.yAxis.maximum;\n switch (type) {\n case 'XY':\n if (this.chart.chartAreaType === 'PolarRadar' && ((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax))) {\n point.isPointInRange = false;\n return true;\n }\n this.setXYMinMax(point.yValue);\n this.yData.push(point.yValue);\n if (this instanceof Series && this.type === 'Bubble') {\n this.sizeMax = Math.max(this.sizeMax, (isNullOrUndefined(point.size) || isNaN(+point.size)) ? this.sizeMax\n : point.size);\n }\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.y) || isNaN(+point.y));\n case 'HighLow':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'HighLowOpenClose':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.open) || isNaN(+point.open)) || (isNullOrUndefined(point.close) || isNaN(+point.close))\n || (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'BoxPlot':\n yValues = (point.y || [null]).filter(function (value) {\n return !isNullOrUndefined(value) && !isNaN(value);\n }).sort(function (a, b) {\n return a - b;\n });\n point.y = yValues;\n this.yMin = Math.min(this.yMin, Math.min.apply(Math, yValues));\n this.yMax = Math.max(this.yMax, Math.max.apply(Math, yValues));\n return !yValues.length;\n }\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setXYMinMax = function (yValue) {\n var isLogAxis = (this.yAxis.valueType === 'Logarithmic' || this.xAxis.valueType === 'Logarithmic');\n var isNegativeValue = yValue < 0 || this.yAxis.rangePadding === 'None';\n var seriesMinY;\n if (this.isRectTypeSeries && !setRange(this.yAxis)) {\n seriesMinY = ((isLogAxis ? (yValue) : isNegativeValue ? yValue : 0));\n }\n else {\n seriesMinY = yValue;\n }\n this.yMin = isLogAxis ?\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY) || (seriesMinY === 0) ||\n (seriesMinY.toString() === '0') || (seriesMinY.toString() === '')) ? this.yMin : seriesMinY) :\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY)) ? this.yMin : seriesMinY);\n this.yMax = Math.max(this.yMax, (isNullOrUndefined(yValue) || isNaN(yValue)) ? this.yMax : yValue);\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setHiloMinMax = function (high, low) {\n this.yMin = Math.min(this.yMin, Math.min((isNullOrUndefined(low) || isNaN(low)) ? this.yMin : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMin : high));\n this.yMax = Math.max(this.yMax, Math.max((isNullOrUndefined(low) || isNaN(low)) ? this.yMax : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMax : high));\n };\n /**\n * Finds the type of the series\n *\n * @private\n */\n SeriesBase.prototype.getSeriesType = function () {\n var type;\n if (this instanceof Series) {\n var seriesType = this.chart.chartAreaType === 'PolarRadar' ? this.drawType : this.type;\n if (seriesType) {\n switch (seriesType) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n type = 'HighLow';\n break;\n case 'HiloOpenClose':\n case 'Candle':\n type = 'HighLowOpenClose';\n break;\n case 'BoxAndWhisker':\n type = 'BoxPlot';\n break;\n default:\n type = 'XY';\n }\n }\n }\n this.seriesType = type;\n };\n /** @private */\n SeriesBase.prototype.pushCategoryData = function (point, index, pointX) {\n if (!this.chart.tooltip.shared) {\n if (!this.visible) {\n return null;\n }\n }\n if (!this.xAxis.isIndexed) {\n if (this.xAxis.indexLabels[pointX] === undefined) {\n this.xAxis.indexLabels[pointX] = this.xAxis.labels.length;\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.indexLabels[pointX];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.xAxis.labels[index] ? this.xAxis.labels[index] += ', ' + pointX :\n this.xAxis.labels.push(pointX);\n point.xValue = index;\n }\n };\n /**\n * To find average of given property\n */\n SeriesBase.prototype.getAverage = function (member, i, data) {\n if (data === void 0) { data = this.currentViewData; }\n var previous = data[i - 1] ? (data[i - 1][member] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][member] || 0) : 0;\n return (previous + next) / 2;\n };\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.refreshDataManager = function (chart) {\n var _this = this;\n this.chart = chart;\n var dataSource;\n var isAngular = 'isAngular';\n if (chart[isAngular]) {\n dataSource = Object.keys(this.dataSource).length ? this.dataSource : chart.dataSource;\n }\n else {\n dataSource = this.dataSource || chart.dataSource;\n }\n if (!(dataSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dataSource, count: dataSource.length }, false);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); });\n };\n SeriesBase.prototype.dataManagerSuccess = function (e, isRemoteData) {\n if (isRemoteData === void 0) { isRemoteData = true; }\n this.currentViewData = e.count ? e.result : [];\n this.chart.allowServerDataBinding = false;\n if (this instanceof Series) {\n if (this.chart.stockChart) {\n this.chart.stockChart.series[this.index].localData = this.currentViewData;\n }\n var argsData = {\n name: seriesRender, series: this, data: this.currentViewData, fill: this.interior\n };\n this.chart.trigger(seriesRender, argsData);\n this.interior = argsData.fill;\n this.currentViewData = argsData.data;\n }\n if (this.chart.stockChart && !(this instanceof Series)) {\n this.currentViewData = this.chart.stockChart.findCurrentData(this.chart.stockChart.series[0].localData, this.chart.stockChart.series[0].xName);\n }\n this.processJsonData();\n this.recordsCount = e.count;\n this.refreshChart(isRemoteData);\n this.currentViewData = null;\n };\n SeriesBase.prototype.refreshChart = function (isRemoteData) {\n var chart = this.chart;\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 1 : 0;\n }\n chart.refreshTechnicalIndicator(this);\n if (this instanceof Series && this.category !== 'TrendLine') {\n for (var _i = 0, _a = this.trendlines; _i < _a.length; _i++) {\n var trendline = _a[_i];\n trendline.setDataSource(this, chart);\n }\n }\n //if (chart.visibleSeries.length === (chart.visibleSeriesCount - chart.indicators.length)) {\n if (chart.visibleSeries.length === (chart.visibleSeriesCount)) {\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart.isBlazor ? {} : chart });\n if (this.chart.stockChart && this.chart.stockChart.initialRender) {\n this.chart.stockChart.initialRender = false;\n this.chart.stockChart.stockChartDataManagerSuccess();\n }\n }\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 0 : 1;\n }\n };\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"colorName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"high\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"low\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"open\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"close\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"volume\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(true)\n ], SeriesBase.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"yAxisName\", void 0);\n __decorate([\n Complex(null, Animation)\n ], SeriesBase.prototype, \"animation\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SeriesBase.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], SeriesBase.prototype, \"query\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], SeriesBase.prototype, \"segments\", void 0);\n __decorate([\n Property('X')\n ], SeriesBase.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property(false)\n ], SeriesBase.prototype, \"enableComplexProperty\", void 0);\n return SeriesBase;\n}(ChildProperty));\nexport { SeriesBase };\n/**\n * Configures the series in charts.\n *\n * @public\n */\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Series(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n _this.visibleSeriesCount = 0;\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.isRectSeries = false;\n /** @private */\n _this.drawPoints = [];\n /** @private */\n _this.lowDrawPoints = [];\n /** @private */\n _this.delayedAnimation = false;\n /** @private */\n _this.rangeColorName = _this.colorName.length > 0 ? _this.colorName : _this.yName;\n return _this;\n }\n /**\n * Refresh the axis label.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.refreshAxisLabel = function () {\n if (this.xAxis.valueType !== 'Category') {\n return null;\n }\n this.xAxis.labels = [];\n this.xAxis.indexLabels = {};\n for (var _i = 0, _a = this.xAxis.series; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.visible && item.category !== 'TrendLine') {\n item.xMin = Infinity;\n item.xMax = -Infinity;\n for (var _b = 0, _c = item.points; _b < _c.length; _b++) {\n var point = _c[_b];\n item.pushCategoryData(point, point.index, point.x);\n item.xMin = Math.min(item.xMin, point.xValue);\n item.xMax = Math.max(item.xMax, point.xValue);\n }\n }\n }\n };\n /**\n * To get the series collection.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.findSeriesCollection = function (column, row, isStack) {\n var seriesCollection = [];\n for (var _i = 0, _a = row.axes; _i < _a.length; _i++) {\n var rowAxis = _a[_i];\n for (var _b = 0, _c = rowAxis.series; _b < _c.length; _b++) {\n var rowSeries = _c[_b];\n for (var _d = 0, _e = column.axes; _d < _e.length; _d++) {\n var axis = _e[_d];\n for (var _f = 0, _g = axis.series; _f < _g.length; _f++) {\n var series = _g[_f];\n if (series === rowSeries && series.visible && this.rectSeriesInChart(series, isStack)) {\n seriesCollection.push(series);\n }\n }\n }\n }\n }\n return seriesCollection;\n };\n /**\n * To get the column type series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.rectSeriesInChart = function (series, isStack) {\n var type = (series.type).toLowerCase();\n return (type.indexOf('column') !== -1 || type.indexOf('bar') !== -1 || type.indexOf('histogram') !== -1 ||\n type.indexOf('hiloopenclose') !== -1 || type.indexOf('candle') !== -1 || type.indexOf('pareto') !== -1 ||\n type.indexOf('hilo') !== -1 || series.drawType.indexOf('Column') !== -1 ||\n type.indexOf('waterfall') !== -1 || type.indexOf('boxandwhisker') !== -1 || isStack);\n };\n /**\n * To calculate the stacked values.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.calculateStackedValue = function (isStacking100, chart) {\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.calculateStackingValues(this.findSeriesCollection(columnItem, item, true), isStacking100);\n }\n }\n };\n Series.prototype.calculateStackingValues = function (seriesCollection, isStacking100) {\n var startValues;\n var endValues;\n var yValues = [];\n var lastPositive = [];\n var lastNegative = [];\n var stackingGroup;\n var lastValue;\n var value;\n var frequencies = [];\n if (isStacking100) {\n frequencies = this.findFrequencies(seriesCollection);\n }\n var groupingValues = [];\n var visiblePoints = [];\n for (var i = 0; i < seriesCollection.length; i++) {\n var series = seriesCollection[i];\n if (!groupingValues[series.stackingGroup]) {\n groupingValues[series.stackingGroup] = [];\n groupingValues[series.stackingGroup].push(series);\n }\n else if (groupingValues[series.stackingGroup] !== undefined) {\n groupingValues[series.stackingGroup].push(series);\n }\n }\n var keys = Object.keys(groupingValues);\n for (var k = 0; k < keys.length; k++) {\n var stackingSeies = [];\n var stackedValues = [];\n var seriesCollection_2 = groupingValues[keys[k]];\n for (var _i = 0, seriesCollection_1 = seriesCollection_2; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Stacking') !== -1 || (series.drawType.indexOf('Stacking') !== -1 &&\n (series.chart.chartAreaType === 'PolarRadar'))) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!lastPositive[stackingGroup]) {\n lastPositive[stackingGroup] = [];\n lastNegative[stackingGroup] = [];\n }\n yValues = series.yData;\n startValues = [];\n endValues = [];\n stackingSeies.push(series);\n visiblePoints = getVisiblePoints(series);\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n lastValue = 0;\n value = +yValues[j]; // Fix for chart not rendering while y value is given as string issue\n if (lastPositive[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastPositive[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (lastNegative[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastNegative[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (isStacking100) {\n value = value / frequencies[stackingGroup][visiblePoints[j].xValue] * 100;\n value = !isNaN(value) ? value : 0;\n visiblePoints[j].percentage = +(value.toFixed(2));\n }\n else {\n stackedValues[j] = stackedValues[j] ? stackedValues[j] + Math.abs(value) : Math.abs(value);\n }\n if (value >= 0) {\n lastValue = lastPositive[stackingGroup][visiblePoints[j].xValue];\n lastPositive[stackingGroup][visiblePoints[j].xValue] += value;\n }\n else {\n lastValue = lastNegative[stackingGroup][visiblePoints[j].xValue];\n lastNegative[stackingGroup][visiblePoints[j].xValue] += value;\n }\n startValues.push(lastValue);\n endValues.push(value + lastValue);\n if (isStacking100 && (endValues[j] > 100)) {\n endValues[j] = 100;\n }\n }\n series.stackedValues = new StackValues(startValues, endValues);\n var isLogAxis = series.yAxis.valueType === 'Logarithmic';\n var isColumnBarType = (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1);\n series.yMin = isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : (series.yAxis.startFromZero && series.yAxis.rangePadding === 'Auto' && series.yMin >= 0) ? 0 : parseFloat((Math.min.apply(0, isStacking100 ? startValues : endValues)).toFixed(10));\n series.yMax = Math.max.apply(0, endValues);\n if (series.yMin > Math.min.apply(0, endValues)) {\n series.yMin = (isStacking100) ? -100 :\n isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, endValues);\n }\n if (series.yMax < Math.max.apply(0, startValues)) {\n series.yMax = 0;\n }\n }\n }\n this.findPercentageOfStacking(stackingSeies, stackedValues, isStacking100);\n }\n };\n Series.prototype.findPercentageOfStacking = function (stackingSeies, values, isStacking100) {\n for (var _i = 0, stackingSeies_1 = stackingSeies; _i < stackingSeies_1.length; _i++) {\n var item = stackingSeies_1[_i];\n if (isStacking100) {\n return null;\n }\n for (var _a = 0, _b = getVisiblePoints(item); _a < _b.length; _a++) {\n var point = _b[_a];\n point.percentage = Math.abs(+(point.y / values[point.index] * 100).toFixed(2));\n }\n }\n };\n Series.prototype.findFrequencies = function (seriesCollection) {\n var frequencies = [];\n var stackingGroup;\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_3 = seriesCollection; _i < seriesCollection_3.length; _i++) {\n var series = seriesCollection_3[_i];\n series.yAxis.isStack100 = series.type.indexOf('100') !== -1 ? true : false;\n visiblePoints = getVisiblePoints(series);\n if (series.type.indexOf('Stacking') !== -1) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!frequencies[stackingGroup]) {\n frequencies[stackingGroup] = [];\n }\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n if (frequencies[stackingGroup][visiblePoints[j].xValue] === undefined) {\n frequencies[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (series.yData[j] > 0) {\n frequencies[stackingGroup][visiblePoints[j].xValue] += series.yData[j];\n }\n else {\n frequencies[stackingGroup][visiblePoints[j].xValue] -= series.yData[j];\n }\n }\n }\n }\n return frequencies;\n };\n /* private dataManagerFailure(e: { result: Object[] }): void {\n this.currentViewData = [];\n this.refreshChart();\n }*/\n /** @private */\n Series.prototype.renderSeries = function (chart) {\n if (this.chart.stockChart && this.xAxis.valueType === 'DateTimeCategory') {\n for (var i = 0; i < this.points.length; i++) {\n var index = this.xAxis.labels.indexOf(Date.parse(this.points[i].x.toString()).toString());\n this.points[i].xValue = index;\n if (chart.series.length > 1) {\n this.xData[i] = index;\n this.xMin = (this.xMin > index) ? index : this.xMin;\n this.xMax = (this.xMax < index) ? index : this.xMax;\n }\n }\n if (this instanceof Series && this.type.indexOf('Spline') > -1) {\n var isArea = this.type.indexOf('Area') > -1;\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n }\n var seriesType = firstToLowerCase(this.type);\n seriesType = seriesType.replace('100', '');\n if (chart[seriesType + 'SeriesModule']) {\n if (this.category !== 'Indicator' && this.category !== 'TrendLine') {\n this.createSeriesElements(chart);\n }\n this.visiblePoints = getVisiblePoints(this);\n chart[seriesType + 'SeriesModule'].render(this, this.xAxis, this.yAxis, chart.requireInvertedAxis);\n if (this.category !== 'Indicator') {\n if (this.errorBar.visible) {\n this.chart.errorBarModule.render(this);\n }\n if (this.marker.dataLabel.visible) {\n chart.dataLabelModule.render(this, this.chart, this.marker.dataLabel);\n }\n this.appendSeriesElement(chart.seriesElements, chart);\n }\n if (!this.chart.enableCanvas) {\n this.performAnimation(chart, seriesType, this.errorBar, this.marker, this.marker.dataLabel);\n }\n }\n };\n /**\n * To create seris element.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.createSeriesElements = function (chart) {\n if (this.category !== 'Indicator') {\n var elementId = chart.element.id;\n // 8 for extend border value 5 for extend size value\n var explodeValue = this.marker.border.width + 8 + 5;\n var render = (this.type === 'Bubble') || (!this.marker.visible && chart.tooltip.shared && chart.enableCanvas) ?\n chart.svgRenderer : chart.renderer;\n var index = this.index === undefined ? this.category : this.index;\n var markerHeight = void 0;\n var markerWidth = void 0;\n var options = void 0;\n if (this.type === 'Scatter' || this.drawType === 'Scatter') {\n markerHeight = (this.marker.height + explodeValue) / 2;\n markerWidth = (this.marker.width + explodeValue) / 2;\n }\n else {\n markerHeight = 0;\n markerWidth = 0;\n }\n if (chart.chartAreaType === 'PolarRadar') {\n var markerMaxValue = (this.drawType === 'Scatter') ? Math.max(this.marker.width, this.marker.height) : 0;\n options = new CircleOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, this.clipRect.width / 2 + this.clipRect.x, this.clipRect.height / 2 + this.clipRect.y, chart.radius + markerMaxValue);\n this.clipRectElement = appendClipElement(chart.redraw, options, render, 'drawCircularClipPath');\n }\n else {\n options = new RectOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: (this.xAxis.columnIndex === 0) ? -markerWidth : 0, y: (this.yAxis.rowIndex === chart.rows.length - 1) ? -markerHeight : 0,\n width: this.clipRect.width + (this.xAxis.columnIndex === chart.columns.length - 1 ? markerWidth * 2 : markerWidth),\n height: this.clipRect.height + (this.yAxis.rowIndex === 0 ? markerHeight * 2 : markerHeight)\n });\n this.clipRectElement = appendClipElement(chart.redraw, options, render);\n }\n var transform = chart.chartAreaType === 'Cartesian' ? 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')' : '';\n this.symbolElement = null;\n this.seriesElement = render.createGroup({\n 'id': elementId + 'SeriesGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + elementId + '_ChartSeriesClipRect_' + index + ')'\n });\n if (this.seriesElement) {\n this.seriesElement.setAttribute('role', 'region');\n this.seriesElement.setAttribute('aria-label', (this.name + ',' + this.type + ' series with ' + this.points.length + ' data points'));\n this.seriesElement.setAttribute('aria-hidden', 'false');\n }\n if (!this.chart.enableCanvas || this.type === 'Bubble') {\n this.seriesElement.setAttribute('tabindex', index === 0 ? '0' : !this.checkTabindex(chart.visibleSeries, index) ? '0' : '');\n this.seriesElement.setAttribute('style', 'outline: none');\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\n };\n Series.prototype.checkTabindex = function (visibleSeries, index) {\n for (var i = 0; i < index; i++) {\n if (visibleSeries[i].visible)\n return true;\n }\n return false;\n };\n /**\n * To append the series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.appendSeriesElement = function (element, chart) {\n var marker = this.marker;\n var dataLabel = marker.dataLabel;\n var redraw = chart.redraw;\n if (this.category !== 'TrendLine') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n var errorBar = this.errorBar;\n if (errorBar.visible) {\n if (chart.chartAreaType === 'PolarRadar') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.errorBarElement, redraw);\n }\n }\n }\n if (marker.visible && (chart.chartAreaType === 'Cartesian' ||\n ((this.drawType !== 'Scatter') && chart.chartAreaType === 'PolarRadar')) && this.type !== 'Scatter' &&\n this.type !== 'Bubble' && this.type !== 'Candle' && this.type !== 'Hilo' && this.type !== 'HiloOpenClose' && this.symbolElement) {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.symbolElement, redraw);\n }\n if (dataLabel.visible && this.textElement) {\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.shapeElement, redraw);\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.textElement, redraw);\n }\n if (!chart.enableCanvas && chart.dataLabelElements.hasChildNodes()) {\n chart.seriesElements.appendChild(chart.dataLabelElements);\n }\n };\n /**\n * To perform animation for chart series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.performAnimation = function (chart, type, errorBar, marker, dataLabel) {\n if (((this.animation.enable && animationMode != 'Disable') || animationMode === 'Enable') && chart.animateSeries && (!chart.stockChart || !chart.stockChart.isStockChartRendered)) {\n chart[type + 'SeriesModule'].doAnimation(this);\n if (errorBar.visible) {\n chart.errorBarModule.doErrorBarAnimation(this);\n }\n if (marker.visible) {\n chart.markerRender.doMarkerAnimation(this);\n }\n //to datalabel animation disabled for edge and IE\n if (dataLabel.visible && Browser.info.name !== 'edge' && !Browser.isIE) {\n chart.dataLabelModule.doDataLabelAnimation(this);\n }\n }\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setPointColor = function (point, color) {\n color = point.interior || color;\n return point.isEmpty ? (this.emptyPointSettings.fill || color) : color;\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setBorderColor = function (point, border) {\n border.width = point.isEmpty ? (this.emptyPointSettings.border.width || border.width) : border.width;\n border.color = point.isEmpty ? (this.emptyPointSettings.border.color || border.color) : border.color;\n return border;\n };\n __decorate([\n Property('')\n ], Series.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"yName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"isClosed\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bullFillColor\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"enableSolidCandles\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"binInterval\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"showNormalDistribution\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], Series.prototype, \"border\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"zOrder\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"groupName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"type\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], Series.prototype, \"errorBar\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], Series.prototype, \"marker\", void 0);\n __decorate([\n Complex(null, ParetoOptions)\n ], Series.prototype, \"paretoOptions\", void 0);\n __decorate([\n Complex({}, DragSettings)\n ], Series.prototype, \"dragSettings\", void 0);\n __decorate([\n Collection([], Trendline)\n ], Series.prototype, \"trendlines\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipFormat\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], Series.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"unSelectedStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"nonHighlightStyle\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"minRadius\", void 0);\n __decorate([\n Property(3)\n ], Series.prototype, \"maxRadius\", void 0);\n __decorate([\n Property('Natural')\n ], Series.prototype, \"splineType\", void 0);\n __decorate([\n Property(0.5)\n ], Series.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], Series.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"showMean\", void 0);\n __decorate([\n Property('Normal')\n ], Series.prototype, \"boxPlotMode\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidth\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidthInPixel\", void 0);\n __decorate([\n Property('Rectangle')\n ], Series.prototype, \"columnFacet\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"columnSpacing\", void 0);\n __decorate([\n Property('#C64E4A')\n ], Series.prototype, \"negativeFillColor\", void 0);\n __decorate([\n Property('#4E81BC')\n ], Series.prototype, \"summaryFillColor\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"intermediateSumIndexes\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"sumIndexes\", void 0);\n __decorate([\n Property('Left')\n ], Series.prototype, \"step\", void 0);\n __decorate([\n Complex({ color: 'black', width: 2 }, Connector)\n ], Series.prototype, \"connector\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], Series.prototype, \"cornerRadius\", void 0);\n return Series;\n}(SeriesBase));\nexport { Series };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `StackingLineSeries` module used to render the Stacking Line series.\n */\nvar StackingLineSeries = /** @class */ (function (_super) {\n __extends(StackingLineSeries, _super);\n function StackingLineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the Stacking line series.\n *\n * @returns {void}\n * @private\n */\n StackingLineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var polarType = series.chart.chartAreaType === 'PolarRadar';\n var getCoordinate = polarType ? TransformToVisible : getPoint;\n var direction = '';\n var visiblePts = this.enableComplexProperty(series);\n var pointsLength = visiblePts.length;\n var stackedvalue = series.stackedValues;\n var pointIndex;\n var nextPointIndex;\n var point1;\n var point2;\n for (var i = 0; i < pointsLength; i++) {\n visiblePts[i].regions = [];\n visiblePts[i].symbolLocations = [];\n pointIndex = visiblePts[i].index;\n if (visiblePts[i].visible && withInRange(visiblePts[i - 1], visiblePts[i], visiblePts[i + 1], series)) {\n point1 = getCoordinate(visiblePts[i].xValue, stackedvalue.endValues[pointIndex], xAxis, yAxis, isInverted, series);\n direction = direction.concat((i ? 'L' : 'M') + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n visiblePts[i].symbolLocations.push(getCoordinate(visiblePts[i].xValue, stackedvalue.endValues[pointIndex], xAxis, yAxis, isInverted, series));\n visiblePts[i].regions.push(new Rect(visiblePts[i].symbolLocations[0].x - series.marker.width, visiblePts[i].symbolLocations[0].y - series.marker.height, 2 * series.marker.width, 2 * series.marker.height));\n }\n else {\n if (series.emptyPointSettings.mode !== 'Drop') {\n if (visiblePts[i + 1] && visiblePts[i + 1].visible) {\n nextPointIndex = visiblePts[i + 1].index;\n point1 = getCoordinate(visiblePts[i + 1].xValue, stackedvalue.endValues[nextPointIndex], xAxis, yAxis, isInverted, series);\n direction = direction.concat('M' + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n }\n }\n }\n }\n if (series.chart.chartAreaType === 'PolarRadar' && visiblePts.length > 1) {\n point1 = { 'y': stackedvalue.endValues[0], 'x': series.points[0].xValue };\n point2 = getCoordinate(point1.x, point1.y, xAxis, yAxis, isInverted, series);\n direction += ('L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ');\n }\n var options = new PathOption(series.chart.element.id + '_Series_' + series.index, 'none', series.width, series.interior, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StackingLineSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n /**\n * To destroy the stacking line.\n *\n * @returns {void}\n * @private\n */\n StackingLineSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name.\n */\n StackingLineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'StackingLineSeries';\n };\n return StackingLineSeries;\n}(LineBase));\nexport { StackingLineSeries };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the Annotation for chart.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * label border properties.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * categories for multi level labels\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * Strip line properties\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"imageUrl\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * MultiLevelLabels properties\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * Specifies range for scrollbarSettings property\n *\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Scrollbar Settings Properties for Lazy Loading\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"trackColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"scrollbarRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"scrollbarColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"trackRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"gripColor\", void 0);\n __decorate([\n Property(16)\n ], ScrollbarSettings.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ScrollbarSettings.prototype, \"enableZoom\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n *\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval.\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n *\n * @returns {string} skeleton format\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'MMMd' : 'yMd') : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Find label format for axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis, currentValue, previousValue) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? 'MMM yyyy' : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PositionReportTemplate.vue?vue&type=style&index=1&id=043f1f23&prod&lang=css\"","//! 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","/* eslint-disable no-trailing-spaces */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getAnimationFunction, pathAnimation, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Animation, animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Base for line type series.\n */\nvar LineBase = /** @class */ (function () {\n /** @private */\n function LineBase(chartModule) {\n this.chart = chartModule;\n }\n /**\n * To improve the chart performance.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.enableComplexProperty = function (series) {\n var tempPoints = [];\n var tempPoints2 = [];\n var xVisibleRange = series.xAxis.visibleRange;\n var yVisibleRange = series.yAxis.visibleRange;\n var seriesPoints = series.points;\n var areaBounds = series.clipRect;\n var xTolerance = Math.abs(xVisibleRange.delta / areaBounds.width);\n var yTolerance = Math.abs(yVisibleRange.delta / areaBounds.height);\n var prevXValue = (seriesPoints[0] && seriesPoints[0].xValue > xTolerance) ? 0 : xTolerance;\n var prevYValue = (seriesPoints[0] && seriesPoints[0].y > yTolerance) ? 0 : yTolerance;\n var xVal = 0;\n var yVal = 0;\n for (var _i = 0, seriesPoints_1 = seriesPoints; _i < seriesPoints_1.length; _i++) {\n var currentPoint = seriesPoints_1[_i];\n currentPoint.symbolLocations = [];\n xVal = currentPoint.xValue ? currentPoint.xValue : xVisibleRange.min;\n yVal = currentPoint.yValue ? currentPoint.yValue : yVisibleRange.min;\n if (Math.abs(prevXValue - xVal) >= xTolerance || Math.abs(prevYValue - yVal) >= yTolerance) {\n tempPoints.push(currentPoint);\n prevXValue = xVal;\n prevYValue = yVal;\n }\n }\n var tempPoint;\n for (var i = 0; i < tempPoints.length; i++) {\n tempPoint = tempPoints[i];\n if (isNullOrUndefined(tempPoint.x) || (series.category === 'Indicator' && (isNaN(tempPoint.xValue) || isNaN(tempPoint.yValue)))) {\n continue;\n }\n else {\n tempPoints2.push(tempPoint);\n }\n }\n return tempPoints2;\n };\n /**\n * To generate the line path direction.\n *\n * @param {Points} firstPoint firstPoint\n * @param {Points} secondPoint secondPoint\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n * @param {string} startPoint startPoint\n */\n LineBase.prototype.getLineDirection = function (firstPoint, secondPoint, series, isInverted, getPointLocation, startPoint) {\n var direction = '';\n if (firstPoint != null) {\n var point1 = getPointLocation(firstPoint.xValue, firstPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n var point2 = getPointLocation(secondPoint.xValue, secondPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n direction = startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ' +\n 'L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ';\n }\n return direction;\n };\n /**\n * To append the line path.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.appendLinePath = function (options, series, clipRect) {\n var element = getElement(options.id);\n var chart = series.chart;\n var previousDirection = element ? element.getAttribute('d') : null;\n var htmlObject = series.chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n if (htmlObject) {\n htmlObject.setAttribute('clip-path', clipRect);\n }\n series.pathElement = htmlObject;\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(htmlObject);\n }\n series.isRectSeries = false;\n pathAnimation(element, options.d, series.chart.redraw, previousDirection, chart.duration);\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To do the progressive animation.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.doProgressiveAnimation = function (series, option) {\n var animation = new Animation({});\n var path = series.pathElement;\n var strokeDashArray = path.getAttribute('stroke-dasharray');\n var pathLength = series.pathElement.getTotalLength();\n var currentTime;\n path.style.visibility = 'hidden';\n animation.animate(path, {\n duration: (option.duration === 0 && animationMode === 'Enable') ? 1000 : option.duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n path.style.visibility = 'visible';\n currentTime = Math.abs(Math.round(((args.timeStamp - args.delay) * pathLength) / args.duration));\n path.setAttribute('stroke-dasharray', currentTime + ',' + pathLength);\n }\n },\n end: function () {\n path.setAttribute('stroke-dasharray', strokeDashArray);\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n /**\n * To store the symbol location and region.\n *\n * @param {Points} point point\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getLocation getLocation\n */\n LineBase.prototype.storePointLocation = function (point, series, isInverted, getLocation) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.symbolLocations.push(getLocation(point.xValue, point.yValue, series.xAxis, series.yAxis, isInverted, series));\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n };\n /**\n * To find point with in the visible range\n *\n * @param {Points} point point\n * @param {Axis} yAxis yAxis\n * @private\n */\n LineBase.prototype.withinYRange = function (point, yAxis) {\n return point.yValue >= yAxis.visibleRange.min && point.yValue <= yAxis.visibleRange.max;\n };\n LineBase.prototype.GetStepLineDirection = function (currentPoint, previousPoint, stepLineType, command) {\n if (command === void 0) { command = 'L'; }\n if (stepLineType === 'Right') {\n return (command + ' ' +\n (previousPoint.x) + ' ' + (currentPoint.y) + ' L ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n else if (stepLineType === 'Center') {\n var centerX = previousPoint.x + (currentPoint.x - previousPoint.x) / 2;\n return (command + ' ' +\n (centerX) + ' ' + (previousPoint.y) + ' L ' + (centerX) + ' ' + (currentPoint.y) + ' L ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n else {\n return (command + ' ' +\n (currentPoint.x) + ' ' + (previousPoint.y) + ' L ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n };\n /**\n * To get first and last visible points\n *\n * @private\n */\n LineBase.prototype.getFirstLastVisiblePoint = function (points) {\n var first = null;\n var last = null;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (first === null && point.visible) {\n first = last = point;\n }\n last = point.visible ? point : last;\n }\n return { first: first ? first : points[0], last: last ? last : points[points.length - 1] };\n };\n /**\n * To Generate the area series border path direction from area series main direction path.\n *\n * @param {string} direction direction\n *\n * */\n LineBase.prototype.getBorderDirection = function (direction) {\n var coordinates = direction.split(' ');\n if (coordinates.length > 3 && !(this.chart.stackingAreaSeriesModule) && !(this.chart.stackingStepAreaSeriesModule)) {\n coordinates.splice(coordinates.length - 4, 3);\n }\n else if (this.chart.stackingAreaSeriesModule || this.chart.stackingStepAreaSeriesModule) {\n coordinates.splice(coordinates.length / 2 + 1, coordinates.length / 2 + 1);\n if (coordinates[coordinates.length - 1] === 'L') {\n coordinates.splice(coordinates.length - 1, 1);\n }\n }\n return coordinates.join(' ');\n };\n /**\n * To remove empty point directions from series direction of area types.\n *\n * @param {string} borderDirection direction\n *\n * */\n LineBase.prototype.removeEmptyPointsBorder = function (borderDirection) {\n var startIndex = 0;\n var coordinates = borderDirection.split(' ');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var point;\n do {\n point = coordinates.indexOf('M', startIndex);\n if (point > -1) {\n coordinates.splice(point + 1, 3);\n startIndex = point + 1;\n if (point - 6 > 0) {\n coordinates.splice(point - 6, 6);\n startIndex -= 6;\n }\n }\n } while (point !== -1);\n return coordinates.join(' ');\n };\n /**\n * To do the linear animation.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.doLinearAnimation = function (series, animation) {\n var clipRect = series.clipRectElement.childNodes[0].childNodes[0];\n var duration = series.chart.animated ? series.chart.duration : animation.duration;\n var effect = getAnimationFunction('Linear');\n var elementHeight = +clipRect.getAttribute('height');\n var elementWidth = +clipRect.getAttribute('width');\n var xCenter = +clipRect.getAttribute('x');\n var yCenter = series.chart.requireInvertedAxis ? +clipRect.getAttribute('height') + +clipRect.getAttribute('y') :\n +clipRect.getAttribute('y');\n var value;\n clipRect.style.visibility = 'hidden';\n new Animation({}).animate(clipRect, {\n duration: (duration === 0 && animationMode === 'Enable') ? 1000 : duration,\n delay: animation.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n clipRect.style.visibility = 'visible';\n if (series.chart.requireInvertedAxis) {\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n else {\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n }\n },\n end: function () {\n clipRect.setAttribute('transform', 'translate(0,0)');\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n return LineBase;\n}());\nexport { LineBase };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getVisiblePoints } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `StackingColumnSeries` module used to render the stacking column series.\n */\nvar StackingColumnSeries = /** @class */ (function (_super) {\n __extends(StackingColumnSeries, _super);\n function StackingColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StackingColumnSeries.prototype.render = function (series) {\n series.isRectSeries = true;\n var sideBySideInfo = this.getSideBySideInfo(series);\n var argsData;\n var stackedValue = series.stackedValues;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n this.rect = this.getRectangle(point.xValue + sideBySideInfo.start, stackedValue.endValues[point.index], point.xValue + sideBySideInfo.end, stackedValue.startValues[point.index], series);\n this.rect.width = series.columnWidthInPixel ? series.columnWidthInPixel : this.rect.width;\n this.rect.x = series.columnWidthInPixel ? this.rect.x - (((series.columnWidthInPixel / 2) * series.rectCount) -\n (series.columnWidthInPixel * series.position)) : this.rect.x;\n argsData = this.triggerEvent(series, point, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.drawRectangle(series, point, this.rect, argsData);\n this.updateSymbolLocation(point, this.rect, series);\n if (series.columnFacet === 'Cylinder') {\n var cylinderSeriesOption = {\n 'isColumn': true,\n 'stacking': series.type === 'StackingColumn100',\n 'isLastSeries': true\n };\n this.drawCylinder(this.options, this.element, cylinderSeriesOption, this.rect, series);\n }\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StackingColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * To destroy the stacking column.\n *\n * @returns {void}\n * @private\n */\n StackingColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n /**\n * Get module name.\n */\n StackingColumnSeries.prototype.getModuleName = function () {\n return 'StackingColumnSeries';\n };\n return StackingColumnSeries;\n}(ColumnBase));\nexport { StackingColumnSeries };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, Browser, remove } from '@syncfusion/ej2-base';\nimport { PointData, ChartLocation } from '../../common/utils/helper';\nimport { getElement, measureText, Rect } from '@syncfusion/ej2-svg-base';\nimport { valueToCoefficient, removeElement, valueToPolarCoefficient, withInBounds } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender, sharedTooltipRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Tooltip` module is used to render the tooltip for chart series.\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function Tooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.commonXvalues = [];\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n Tooltip.prototype.mouseUpHandler = function () {\n var chart = this.control;\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n if (chart.isTouch && !this.isSelected(chart) &&\n ((withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect) && chart.tooltip.shared)\n || !chart.tooltip.shared)) {\n if (!chart.crosshair.enable) {\n this.tooltip();\n if (chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(chart.tooltip.fadeOutDuration);\n }\n }\n else if (chart.startMove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(2000);\n }\n }\n else if (!this.findData(data, this.previousPoints[0]) && chart.tooltip.fadeOutMode === 'Click') {\n this.removeTooltip(0);\n }\n };\n Tooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n };\n Tooltip.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n chart.mouseX = chart.mouseX / chart.scaleX;\n chart.mouseY = chart.mouseY / chart.scaleY;\n if (chart.stockChart && chart.stockChart.onPanning) {\n if (chart.mouseY < chart.chartAxisLayoutPanel.seriesClipRect.y) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y;\n }\n else if (chart.mouseY > chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height;\n }\n }\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip && !this.isSelected(chart)) {\n if (!chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n }\n else {\n if (chart.tooltip.shared && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n }\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Tooltip.prototype.longPress = function () {\n var chart = this.chart;\n if (chart.crosshair.enable && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.tooltip();\n chart.markerRender.markerMove(false);\n }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n */\n Tooltip.prototype.tooltip = function () {\n var elementId = this.chart.enableCanvas ? this.element.id + '_tooltip_group' : this.element.id + '_tooltip_svg';\n var svgElement = this.getElement(elementId);\n // To prevent the disappearance of the tooltip, while resize the stock chart.\n var isStockSvg = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);\n var tooltipDiv = this.getTooltipElement(isTooltip);\n if (this.chart.enableCanvas && tooltipDiv) {\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));\n }\n if (!this.chart.tooltip.shared) {\n this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n else {\n this.renderGroupedTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n };\n Tooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header, data.series.xAxis, data.series.yAxis);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n Tooltip.prototype.findShapes = function () {\n if (!this.chart.tooltip.enableMarker) {\n return [];\n }\n var marker = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n marker.push(data.point.marker.shape || data.series.marker.shape || 'Circle');\n }\n return marker;\n };\n Tooltip.prototype.renderSeriesTooltip = function (chart, isFirst, tooltipDiv) {\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n this.currentPoints = [];\n if (this.findData(data, this.previousPoints[0])) {\n if (!(chart.dataEditingModule && chart.dataEditingModule.isPointDragging) && (this.previousPoints[0] &&\n data.point.index === this.previousPoints[0].point.index && data.series.index === this.previousPoints[0].series.index)) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, true)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n else {\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && !(series.category === 'TrendLine')) {\n data = this.getClosestX(chart, series, commonXvalues) || data;\n }\n }\n }\n }\n if (data && data.point) {\n this.findMouseValue(data, chart);\n }\n };\n Tooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: tooltipTemplate,\n series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle, point: point.point,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var tooltip = this.chart.tooltip;\n var chartTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.headerText = argsData.headerText;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n var location_1 = _this.getSymbolLocation(point);\n location_1 = location_1 ? location_1 : new ChartLocation(null, null);\n location_1.x = tooltip.location.x !== null ? tooltip.location.x : location_1.x;\n location_1.y = tooltip.location.y !== null ? tooltip.location.y : location_1.y;\n location_1 = (location_1.x === null && location_1.y === null) ? null : location_1;\n _this.createTooltip(_this.chart, isFirst, location_1, point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, borderWidth, _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, null, _this.getTemplateText(point), _this.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n chartTooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, chartTooltipSuccess);\n };\n Tooltip.prototype.findMarkerHeight = function (pointData) {\n var markerHeight = 0;\n var series = pointData.series;\n markerHeight = ((series.marker.visible || (this.chart.tooltip.shared &&\n (!series.isRectSeries || series.marker.visible)) || series.type === 'Scatter' || series.drawType === 'Scatter')\n && !(series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) ?\n ((series.marker.height + 2) / 2 + (2 * series.marker.border.width)) : 0;\n return markerHeight;\n };\n Tooltip.prototype.findData = function (data, previous) {\n return data.point && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex) || (previous.point === data.point));\n };\n Tooltip.prototype.getSymbolLocation = function (data) {\n var location;\n if (data.series.type !== 'BoxAndWhisker') {\n if (!data.point.symbolLocations[0]) {\n return null;\n }\n location = new ChartLocation(data.point.symbolLocations[0].x, data.point.symbolLocations[0].y);\n }\n switch (data.series.type) {\n case 'BoxAndWhisker':\n return this.getBoxLocation(data);\n case 'Waterfall':\n return this.getWaterfallRegion(data, location);\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'RangeColumn':\n return this.getRangeArea(data, location);\n default:\n return location;\n }\n };\n Tooltip.prototype.getRangeArea = function (data, location) {\n if (data.point.regions[0]) {\n if (!this.inverted) {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2;\n }\n else {\n location.x = data.point.regions[0].x + data.point.regions[0].width / 2;\n }\n if (data.series.type === 'RangeStepArea') {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2 + data.point.regions[0].width;\n }\n }\n return location;\n };\n Tooltip.prototype.getWaterfallRegion = function (data, location) {\n if (!this.inverted) {\n location.y = (data.point.y < 0) ?\n location.y - data.point.regions[0].height : location.y;\n }\n else {\n location.x = (data.point.y < 0) ?\n location.x + data.point.regions[0].width : location.x;\n }\n return location;\n };\n Tooltip.prototype.getTooltipText = function (pointData) {\n var series = pointData.series;\n return this.parseTemplate(pointData.point, series, this.getFormat(this.chart, series), series.xAxis, series.yAxis);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Tooltip.prototype.getTemplateText = function (data) {\n if (this.template && this.chart.tooltip.shared) {\n var point = [];\n for (var i = 0; i < data.length; i++) {\n point[i] = extend({}, data[i].point);\n point[i].x = this.formatPointValue(data[i].point, data[i].series.xAxis, 'x', true, false);\n if ((data[i].series.seriesType === 'XY')) {\n point[i].y = this.formatPointValue(data[i].point, data[i].series.yAxis, 'y', false, true);\n }\n else {\n point[i].low = this.formatPointValue(data[i].point, data[i].series.yAxis, 'low', false, true);\n point[i].high = this.formatPointValue(data[i].point, data[i].series.yAxis, 'high', false, true);\n }\n }\n return point;\n }\n else if (this.template) {\n var point = extend({}, data.point);\n point.x = this.formatPointValue(data.point, data.series.xAxis, 'x', true, false);\n if ((data.series.seriesType === 'XY')) {\n point.y = this.formatPointValue(data.point, data.series.yAxis, 'y', false, true);\n }\n else {\n point.low = this.formatPointValue(data.point, data.series.yAxis, 'low', false, true);\n point.high = this.formatPointValue(data.point, data.series.yAxis, 'high', false, true);\n }\n return point;\n }\n else {\n return data.point;\n }\n };\n Tooltip.prototype.findMouseValue = function (data, chart) {\n if (!chart.requireInvertedAxis) {\n if (chart.chartAreaType === 'PolarRadar') {\n this.valueX = valueToPolarCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n else {\n this.valueX = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? this.valueX :\n valueToCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n this.valueY = chart.mouseY;\n }\n else {\n this.valueY = (1 - valueToCoefficient(data.point.xValue, data.series.xAxis)) * data.series.xAxis.rect.height\n + data.series.xAxis.rect.y;\n this.valueX = chart.mouseX;\n }\n };\n Tooltip.prototype.renderGroupedTooltip = function (chart, isFirst, tooltipDiv) {\n var data;\n var dataCollection = [];\n var lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\n var closestXValue = Number.MAX_VALUE;\n var closetYValue = Number.MAX_VALUE;\n var pointXValue;\n var pointYValue;\n var tempData;\n //let headerContent : string = '';\n if (isFirst) {\n if (!chart.stockChart) {\n if (tooltipDiv) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n else {\n if (tooltipDiv && !getElement(tooltipDiv.id)) {\n document.getElementById(chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n }\n this.removeText();\n var argument = {\n text: [], cancel: false, name: sharedTooltipRender, data: [], point: [], series: [], headerText: '', textStyle: this.textStyle, template: ''\n };\n var i = 0;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && series.visible && pointData.point !== null) {\n data = new PointData(series.points[pointData.point.index], series);\n }\n // if (data && this.header !== '' && this.currentPoints.length === 0) {\n // headerContent = this.findHeader(data);\n // }\n if (chart.tooltip.showNearestPoint && !data) {\n data = this.getClosestX(chart, series, this.commonXValue([series]));\n }\n if (data) {\n argument.data.push({ pointX: data.point.x, pointY: data.point.y, seriesIndex: data.series.index,\n seriesName: data.series.name, pointIndex: data.point.index, pointText: data.point.text });\n argument.series[i] = data.series;\n argument.point[i] = data.point;\n argument.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n argument.text.push(this.getTooltipText(data));\n pointXValue = (!chart.requireInvertedAxis) ? chart.mouseX - data.series.clipRect.x : chart.mouseY - data.series.clipRect.y;\n pointYValue = chart.mouseY - data.series.clipRect.y;\n if (data.point.symbolLocations && data.point.symbolLocations.length && Math.abs(pointXValue - data.point.symbolLocations[0].x) <= closestXValue &&\n Math.abs(data.point.symbolLocations[0].y - pointYValue) < Math.abs(closetYValue - pointYValue)) {\n closestXValue = Math.abs(pointXValue - data.point.symbolLocations[0].x);\n closetYValue = data.point.symbolLocations[0].y;\n tempData = data;\n }\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : tempData || data;\n dataCollection.push(data);\n }\n // if (data && this.triggerEvent(data, isFirst, this.getTooltipText(data)), this.findHeader(data)) {\n // this.findMouseValue(data, chart);\n // (this.currentPoints).push(data);\n // data = null;\n // } else if (data) {\n // extraPoints.push(data);\n // }\n i++;\n }\n if (!chart.tooltip.showNearestPoint) {\n var collection = [];\n this.currentPoints = [];\n argument.point = [];\n argument.series = [];\n argument.data = [];\n argument.text = [];\n for (var _b = 0, dataCollection_1 = dataCollection; _b < dataCollection_1.length; _b++) {\n var data_1 = dataCollection_1[_b];\n if (data_1.point.symbolLocations[0].x === lastData.point.symbolLocations[0].x || ((data_1.series.type.indexOf('Column') !== -1 || lastData.series.type.indexOf('Column') !== -1) && (data_1.point.xValue === lastData.point.xValue))) {\n argument.point.push(data_1.point);\n argument.series.push(data_1.series);\n argument.text.push(this.getTooltipText(data_1));\n argument.headerText = this.findHeader(data_1);\n collection.push(data_1);\n argument.data.push({\n pointX: data_1.point.x, pointY: data_1.point.y, seriesIndex: data_1.series.index,\n seriesName: data_1.series.name, pointIndex: data_1.point.index, pointText: data_1.point.text\n });\n }\n }\n dataCollection = collection;\n this.currentPoints = collection;\n }\n if (dataCollection.length > 0 && this.currentPoints.length > 0) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerSharedTooltip(argument, lastData, extraPoints, chart, isFirst, dataCollection);\n }\n else if (this.getElement(this.element.id + '_tooltip_path')) {\n this.getElement(this.element.id + '_tooltip_path').setAttribute('d', '');\n }\n };\n Tooltip.prototype.triggerSharedTooltip = function (argument, point, extraPoints, chart, isFirst, dataCollection) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle, template: tooltipTemplate,\n point: argument.point, series: argument.series,\n data: argument.data\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var toolbarHeight;\n var titleHeight;\n var currentPoints = [];\n if (chart.stockChart) {\n toolbarHeight = chart.stockChart.enablePeriodSelector ? chart.stockChart.toolbarHeight : 0;\n titleHeight = measureText(this.chart.stockChart.title, this.chart.stockChart.titleStyle, this.chart.themeStyle.tooltipLabelFont).height + 10;\n }\n var sharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n for (var i = 0; i < argsData.text.length; i++) {\n if (argsData.text[i]) {\n currentPoints.push(_this.currentPoints[i]);\n }\n }\n _this.currentPoints = currentPoints;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n var tooltip = _this.chart.tooltip;\n _this.findMouseValue(point, _this.chart);\n var location_2 = _this.findSharedLocation();\n location_2 = location_2 ? location_2 : new ChartLocation(null, null);\n location_2.x = tooltip.location.x !== null ? tooltip.location.x : location_2.x;\n location_2.y = tooltip.location.y !== null ? tooltip.location.y : location_2.y;\n location_2 = (location_2.x === null && location_2.y === null) ? null : location_2;\n _this.createTooltip(chart, isFirst, location_2, _this.currentPoints.length === 1 ? _this.currentPoints[0].series.clipRect : null, dataCollection.length === 1 ? dataCollection[0].point : null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, (chart.stockChart ? (toolbarHeight + titleHeight + borderWidth) : borderWidth), _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, extraPoints, _this.template ? _this.getTemplateText(dataCollection) : null, _this.template ? argsData.template : '');\n point = null;\n }\n else {\n extraPoints.push(point);\n }\n };\n sharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, sharedTooltip);\n };\n Tooltip.prototype.findSharedLocation = function () {\n var stockChart = this.chart.stockChart;\n if (stockChart) {\n if (this.text.length === 1) {\n this.text.push('');\n }\n var toolbarHeight = stockChart.enablePeriodSelector ? stockChart.toolbarHeight : 0;\n var element = document.getElementById(stockChart.element.id + '_ChartTitle');\n var titleHeight = stockChart.title !== '' ? element.getBoundingClientRect().height + 10 : 0;\n if (stockChart.tooltip.position === 'Nearest') {\n return new ChartLocation(this.valueX, this.valueY + toolbarHeight + titleHeight);\n }\n return new ChartLocation(this.chart.chartAxisLayoutPanel.seriesClipRect.x + 5, this.chart.chartAxisLayoutPanel.seriesClipRect.y + toolbarHeight + 5 + titleHeight);\n }\n else {\n if (this.currentPoints.length > 1) {\n return new ChartLocation(this.valueX, this.valueY);\n }\n else {\n return this.getSymbolLocation(this.currentPoints[0]);\n }\n }\n };\n Tooltip.prototype.getBoxLocation = function (data) {\n var location = this.lierIndex > 3 ? (data.point.outliers.length > 0 ? data.point.symbolLocations[this.lierIndex - 4] : null) :\n {\n x: data.point.regions[0].x + (data.point.regions[0].width / 2),\n y: data.point.regions[0].y + (data.point.regions[0].height / 2)\n };\n return location;\n };\n Tooltip.prototype.parseTemplate = function (point, series, format, xAxis, yAxis) {\n var val;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n val = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(val.source, this.formatPointValue(point, val.source === '${point.x}' ? xAxis : yAxis, dataValue, val.source === '${point.x}', (val.source === '${point.high}' ||\n val.source === '${point.open}' ||\n val.source === '${point.close}' ||\n val.source === '${point.low}' ||\n val.source === '${point.y}' ||\n val.source === '${point.minimum}' ||\n val.source === '${point.maximum}' ||\n val.source === '${point.outliers}' ||\n val.source === '${point.upperQuartile}' ||\n val.source === '${point.lowerQuartile}' ||\n val.source === '${point.median}')));\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n val = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(val.source, textValue);\n }\n return format;\n };\n Tooltip.prototype.formatPointValue = function (point, axis, dataValue, isXPoint, isYPoint) {\n var textValue;\n var customLabelFormat;\n var value;\n if (axis.valueType !== 'Category' && isXPoint) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(point[dataValue])) :\n axis.format(point[dataValue]);\n }\n else if (isYPoint && !isNullOrUndefined(point[dataValue])) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n value = dataValue === 'outliers' ? axis.format(point[dataValue][this.lierIndex - 4]) :\n axis.format(point[dataValue]);\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', value) : value;\n }\n else if (dataValue === 'size') {\n var format = this.chart.intl.getNumberFormat({ format: '', useGrouping: this.chart.useGroupingSeparator });\n textValue = typeof point[dataValue] === 'number' ? format(point[dataValue]) : point[dataValue];\n }\n else {\n textValue = point[dataValue];\n }\n return textValue;\n };\n Tooltip.prototype.getFormat = function (chart, series) {\n if (series.tooltipFormat) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return series.tooltipFormat;\n }\n if (!series.tooltipFormat && chart.tooltip.format) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return chart.tooltip.format;\n }\n var textX = (series.type === 'Histogram') ? '${point.minimum}' + '-' + '${point.maximum}' : '${point.x}';\n var format = !chart.tooltip.shared ? textX : '${series.name}';\n switch (series.seriesType) {\n case 'XY':\n if (series.category === 'Indicator') {\n this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return format + ' : ' + ((series.type === 'Bubble') ? '${point.y} Size : ${point.size}' :\n '${point.y}');\n case 'HighLow':\n return format + ('
High : ${point.high}
Low : ${point.low}');\n case 'HighLowOpenClose':\n return format + ('
High : ${point.high}
Low : ${point.low}
' +\n 'Open : ${point.open}
Close : ${point.close}');\n case 'BoxPlot': {\n return format + '
' + (this.lierIndex > 3 ? 'Outliers : ${point.outliers}' :\n 'Maximum : ${point.maximum}
Q3 : ${point.upperQuartile}
' +\n 'Median : ${point.median}
Q1 : ${point.lowerQuartile}
Minimum : ${point.minimum}');\n }\n default: return '';\n }\n };\n Tooltip.prototype.getIndicatorTooltipFormat = function (series, chart, format) {\n var toolTip;\n if (series.seriesType === 'XY') {\n toolTip = series.name + ' : ${point.y}';\n }\n else {\n toolTip = format;\n }\n return toolTip;\n };\n /*\n * @hidden\n */\n Tooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {\n var item = data_2[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n /**\n * Get module name.\n */\n Tooltip.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Tooltip;\n}(BaseTooltip));\nexport { Tooltip };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { initForeignKeyColumn, getForeignKeyData, generateQuery } from '../base/constant';\nimport { getDatePredicate } from '../base/util';\nimport { Data } from './data';\nimport * as events from '../base/constant';\n/**\n * `ForeignKey` module is used to handle foreign key column's actions.\n */\nvar ForeignKey = /** @class */ (function (_super) {\n __extends(ForeignKey, _super);\n function ForeignKey(parent, serviceLocator) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.initEvent();\n return _this;\n }\n ForeignKey.prototype.initEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n };\n ForeignKey.prototype.initForeignKeyColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].dataSource = (columns[parseInt(i.toString(), 10)].dataSource instanceof DataManager ?\n columns[parseInt(i.toString(), 10)].dataSource :\n (isNullOrUndefined(columns[parseInt(i.toString(), 10)].dataSource) ? new DataManager() :\n 'result' in columns[parseInt(i.toString(), 10)].dataSource ? columns[parseInt(i.toString(), 10)].dataSource :\n new DataManager(columns[parseInt(i.toString(), 10)].dataSource)));\n }\n };\n ForeignKey.prototype.eventfPromise = function (args, query, key, column) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n state.action = args.action;\n var dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(function () {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(events.columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n };\n ForeignKey.prototype.getForeignKeyData = function (args) {\n var _this = this;\n var foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n var allPromise = [];\n var _loop_1 = function (i) {\n var promise = void 0;\n var query = args.isComplex ? this_1.genarateColumnQuery(foreignColumns[parseInt(i.toString(), 10)]) :\n this_1.genarateQuery(foreignColumns[parseInt(i.toString(), 10)], args.result.result, false, true);\n query.params = this_1.parent.query.params;\n var dataSource = foreignColumns[parseInt(i.toString(), 10)].dataSource;\n if (dataSource && 'result' in dataSource) {\n var def = this_1.eventfPromise(args, query, dataSource, foreignColumns[parseInt(i.toString(), 10)]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(function () {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n };\n var this_1 = this;\n for (var i = 0; i < foreignColumns.length; i++) {\n _loop_1(i);\n }\n Promise.all(allPromise).then(function (responses) {\n for (var i = 0; i < responses.length; i++) {\n foreignColumns[parseInt(i.toString(), 10)].columnData = responses[parseInt(i.toString(), 10)].result;\n if (foreignColumns[parseInt(i.toString(), 10)].editType === 'dropdownedit' && 'result' in foreignColumns[parseInt(i.toString(), 10)].dataSource) {\n foreignColumns[parseInt(i.toString(), 10)].edit.params = extend(foreignColumns[parseInt(i.toString(), 10)]\n .edit.params, {\n dataSource: responses[parseInt(i.toString(), 10)].result,\n query: new Query(), fields: {\n value: foreignColumns[parseInt(i.toString(), 10)].foreignKeyField ||\n foreignColumns[parseInt(i.toString(), 10)].field,\n text: foreignColumns[parseInt(i.toString(), 10)].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch(function (e) {\n _this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n };\n ForeignKey.prototype.generateQueryFormData = function (args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n };\n ForeignKey.prototype.genarateQuery = function (column, e, fromData, needQuery) {\n var gObj = this.parent;\n var predicates = [];\n var query = new Query();\n var field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n var filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (var i = 0; i < filteredValue.length; i++) {\n if (filteredValue[parseInt(i.toString(), 10)] && filteredValue[parseInt(i.toString(), 10)].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[parseInt(i.toString(), 10)], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[parseInt(i.toString(), 10)], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n return (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n };\n ForeignKey.prototype.genarateColumnQuery = function (column) {\n var gObj = this.parent;\n var query = new Query();\n var queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n var sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n };\n ForeignKey.prototype.isFiltered = function (column) {\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n };\n ForeignKey.prototype.getModuleName = function () {\n return 'foreignKey';\n };\n ForeignKey.prototype.destroy = function () {\n this.destroyEvent();\n };\n ForeignKey.prototype.destroyEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n };\n return ForeignKey;\n}(Data));\nexport { ForeignKey };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['isLazyUpdate', 'plugins', 'autocomplete', 'cssClass', 'enablePersistence', 'enableRtl', 'enabled', 'floatLabelType', 'htmlAttributes', 'locale', 'multiline', 'placeholder', 'readonly', 'showClearButton', 'type', 'value', 'width', 'blur', 'change', 'created', 'destroyed', 'focus', 'input'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS TextBox Component\n * ```html\n * \n * ```\n */\nexport var TextBoxComponent = vueDefineComponent({\n name: 'TextBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new TextBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addAttributes: function (attributes) {\n return this.ej2Instances.addAttributes(attributes);\n },\n addIcon: function (position, icons) {\n return this.ej2Instances.addIcon(position, icons);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n removeAttributes: function (attributes) {\n return this.ej2Instances.removeAttributes(attributes);\n },\n }\n});\nexport var TextBoxPlugin = {\n name: 'ejs-textbox',\n install: function (Vue) {\n Vue.component(TextBoxPlugin.name, TextBoxComponent);\n }\n};\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { withInRange, getPoint, drawSymbol, getElement } from '../../common/utils/helper';\nimport { markerAnimate, TransformToVisible, appendChildElement } from '../../common/utils/helper';\nimport { PathOption, Rect, Size } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ScatterSeries` module is used to render the scatter series.\n */\nvar ScatterSeries = /** @class */ (function () {\n function ScatterSeries() {\n }\n /**\n * Render the scatter series.\n *\n * @returns {void}\n * @private\n */\n ScatterSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n // Scatter series DataLabel is not rendered after selecting StackingColumn\n series.isRectSeries = false;\n var marker = series.marker;\n var visiblePoints = this.enableComplexProperty(series);\n var argsData;\n var getCoordinate = series.chart.chartAreaType === 'PolarRadar' ? TransformToVisible : getPoint;\n var startLocation;\n var redraw = series.chart.redraw;\n var scatterBorder = {\n width: this.isLineShapeMarker(marker.shape) ? series.width : series.border.width,\n color: this.isLineShapeMarker(marker.shape) ? series.interior : series.border.color\n };\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n startLocation = (redraw && point.symbolLocations) ? point.symbolLocations[0] : null;\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, series.interior),\n border: series.setBorderColor(point, scatterBorder),\n height: marker.height, width: marker.width, shape: marker.shape\n };\n series.chart.trigger(pointRender, argsData);\n if (!argsData.cancel) {\n point.symbolLocations.push(getCoordinate(point.xValue, point.yValue, xAxis, yAxis, isInverted, series));\n point.color = argsData.fill;\n this.refresh(series, point, argsData, startLocation);\n }\n else {\n point.marker = { visible: true };\n }\n }\n }\n };\n ScatterSeries.prototype.isLineShapeMarker = function (shape) {\n return shape === 'HorizontalLine' || shape === 'VerticalLine' || shape === 'Cross';\n };\n /**\n * To improve the chart performance.\n *\n * @returns {void}\n * @private\n */\n ScatterSeries.prototype.enableComplexProperty = function (series) {\n var tempPoints2 = [];\n var tempPoints = [];\n var yVisibleRange = series.yAxis.visibleRange;\n var xVisibleRange = series.xAxis.visibleRange;\n var areaBounds = series.clipRect;\n var seriesPoints = series.points;\n var yTolerance = Math.abs(yVisibleRange.delta / areaBounds.height);\n var xTolerance = Math.abs(xVisibleRange.delta / areaBounds.width);\n var prevYValue = (seriesPoints[0] && seriesPoints[0].y > yTolerance) ? 0 : yTolerance;\n var prevXValue = (seriesPoints[0] && seriesPoints[0].x > xTolerance) ? 0 : xTolerance;\n var yVal = 0;\n var xVal = 0;\n for (var _i = 0, seriesPoints_1 = seriesPoints; _i < seriesPoints_1.length; _i++) {\n var currentPoint = seriesPoints_1[_i];\n currentPoint.symbolLocations = [];\n yVal = currentPoint.yValue ? currentPoint.yValue : yVisibleRange.min;\n xVal = currentPoint.xValue ? currentPoint.xValue : xVisibleRange.min;\n if (Math.abs(prevYValue - yVal) >= yTolerance || Math.abs(prevXValue - xVal) >= xTolerance) {\n tempPoints.push(currentPoint);\n prevYValue = yVal;\n prevXValue = xVal;\n }\n }\n var currentTempPoint;\n for (var i = 0; i < tempPoints.length; i++) {\n currentTempPoint = tempPoints[i];\n if (isNullOrUndefined(currentTempPoint.x) || currentTempPoint.x === '') {\n continue;\n }\n else {\n tempPoints2.push(currentTempPoint);\n }\n }\n return tempPoints2;\n };\n /**\n * To append scatter element\n *\n * @param {Series} series series\n * @param {Points} point point\n * @param {IPointRenderEventArgs} argsData argsData\n * @param {ChartLocation} startLocation startLocation\n * @returns {void}\n */\n ScatterSeries.prototype.refresh = function (series, point, argsData, startLocation) {\n var chart = series.chart;\n var circlePath;\n var previousPath;\n var marker = series.marker;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n var shapeOption = new PathOption(chart.element.id + '_Series_' + series.index + '_Point_' + point.index, argsData.fill, argsData.border.width, (series.chart.enableCanvas && !argsData.border.color) ? argsData.fill : argsData.border.color, series.opacity, null);\n if (chart.redraw && getElement(shapeOption.id)) {\n circlePath = argsData.shape === 'Circle' ? 'c' : '';\n previousPath = getElement(shapeOption.id).getAttribute('d');\n }\n var element = drawSymbol(point.symbolLocations[0], argsData.shape, new Size(argsData.width, argsData.height), imageURL, shapeOption, point.x.toString() + ':' + point.yValue.toString(), series.chart.renderer, series.clipRect);\n appendChildElement(series.chart.enableCanvas, series.seriesElement, element, chart.redraw, true, circlePath + 'x', circlePath + 'y', startLocation, previousPath, false, false, null, null, true);\n point.regions.push(new Rect(point.symbolLocations[0].x - marker.width, point.symbolLocations[0].y - marker.height, 2 * marker.width, 2 * marker.height));\n point.marker = {\n border: argsData.border, fill: argsData.fill,\n height: argsData.height, visible: true,\n width: argsData.width, shape: argsData.shape, imageUrl: imageURL\n };\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ScatterSeries.prototype.doAnimation = function (series) {\n var duration = series.animation.duration;\n var delay = series.animation.delay;\n var rectElements = series.seriesElement.childNodes;\n var count = 1;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.symbolLocations.length || !rectElements[count]) {\n continue;\n }\n markerAnimate(rectElements[count], delay, duration, series, point.index, point.symbolLocations[0], false);\n count++;\n }\n };\n /**\n * Get module name.\n */\n ScatterSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'ScatterSeries';\n };\n /**\n * To destroy the scatter.\n *\n * @returns {void}\n */\n ScatterSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return ScatterSeries;\n}());\nexport { ScatterSeries };\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//! 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 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 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: 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 bs;\n\n})));\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enableMask', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'fullScreenMode', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', 'maskPlaceholder', 'max', 'min', 'openOnFocus', 'placeholder', 'readonly', 'serverTimezoneOffset', 'showClearButton', 'showTodayButton', 'start', 'strictMode', 'value', 'values', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DatePicker Component.\n * ```html\n * \n * ```\n */\nexport var DatePickerComponent = vueDefineComponent({\n name: 'DatePickerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DatePicker({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addDate: function (dates) {\n return this.ej2Instances.addDate(dates);\n },\n createContent: function () {\n return this.ej2Instances.createContent();\n },\n currentView: function () {\n return this.ej2Instances.currentView();\n },\n focusIn: function (triggerEvent) {\n return this.ej2Instances.focusIn(triggerEvent);\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n navigateTo: function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n },\n removeDate: function (dates) {\n return this.ej2Instances.removeDate(dates);\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n show: function (type, e) {\n return this.ej2Instances.show(type, e);\n },\n }\n});\nexport var DatePickerPlugin = {\n name: 'ejs-datepicker',\n install: function (Vue) {\n Vue.component(DatePickerPlugin.name, DatePickerComponent);\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","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \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","import urls from './urls'\r\nimport authToken from './authToken';\r\nimport { DataManager, WebApiAdaptor } from \"@syncfusion/ej2-data\";\r\nimport apis from './network'\r\nimport logger from './logger'\r\nimport rules from './permissions'\r\nimport checkUIPermissions from './UIPermissions'\r\n\r\nclass CustomWebApiAdaptor extends WebApiAdaptor {\r\n beforeSend(dm, xhttp, p3) {\r\n\r\n const originalFail = p3.onFailure;\r\n\r\n p3.onFailure = function (err) {\r\n if (err.status === 401) {\r\n const token = authToken.get();\r\n if (token) {\r\n logger.log(\"trying token refresh...\", err);\r\n apis.unprotectedApi.put(\r\n \"/auth\",\r\n {\r\n Token: token\r\n }\r\n ).then((r) => r.data).then((resp) => { \r\n authToken.set(resp.token || resp.Token);\r\n rules.getPermissions(resp.token || resp.Token);\r\n checkUIPermissions();\r\n logger.log(\"refreshed\");\r\n }).catch((err) => {\r\n logger.log(\"refresh token failed\", err)\r\n //navigate to login - some questions asked\r\n apis.navigateToLogin(window.location.pathname);\r\n });\r\n } else {\r\n logger.log(\"No token to refresh...\", err)\r\n apis.navigateToLogin(window.location.pathname);\r\n }\r\n }\r\n\r\n if (originalFail && typeof (originalFail) === \"function\") {\r\n try {\r\n originalFail(err);\r\n } catch (e) {\r\n logger.log(\"original error handler failed\", err);\r\n logger.log(\"new error\", e);\r\n }\r\n \r\n }\r\n }\r\n\r\n super.beforeSend(dm, xhttp, p3);\r\n }\r\n}\r\n\r\nconst SyncHelper = {\r\n getDataManager: (relativePath, queryString) => {\r\n return new DataManager({\r\n url: `${urls.apiBaseUrl}${relativePath}${(queryString ? ('?' + queryString) : '')}`,\r\n adaptor: new CustomWebApiAdaptor,\r\n crossDomain: true,\r\n headers: [{ Authorization: `Bearer ${authToken.get()}`}]\r\n });\r\n }\r\n};\r\n\r\nexport default SyncHelper;","//! 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","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (gObj.isVue) {\n gObj.setProperties({ query: gObj.query instanceof Query ? gObj.query : new Query() }, true);\n }\n else {\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calandar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() != 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation, withInBounds, rotateTextSize } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement, stringToNumber } from '../../common/utils/helper';\nimport { Thickness, logBase, createZoomingLabels, getElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText, TextOption, PathOption } from '@syncfusion/ej2-svg-base';\nimport { textElement, textTrim, getRotatedRectangleCoordinates, isRotatedRectIntersect, isZoomSet } from '../../common/utils/helper';\n/**\n * Specifies the Cartesian Axis Layout.\n */\nvar axisPadding = 10;\nvar CartesianAxisLayoutPanel = /** @class */ (function () {\n /** @private */\n function CartesianAxisLayoutPanel(chartModule) {\n this.chart = chartModule;\n this.padding = 5;\n }\n /**\n * Measure the axis size.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n var chartAreaWidth = chart.chartArea.width ? stringToNumber(chart.chartArea.width, chart.availableSize.width) : null;\n this.crossAt(chart);\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n this.initialClipRect = rect;\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with initial Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n this.calculateAxisSize(this.initialClipRect);\n }\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with series Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (chartAreaWidth) {\n this.calculateFixedChartArea(chart, chartAreaWidth);\n }\n if (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateFixedChartArea = function (chart, chartAreaWidth) {\n this.seriesClipRect.width = chartAreaWidth;\n this.seriesClipRect.x = chart.availableSize.width - chart.margin.right - chartAreaWidth -\n (chart.legendSettings.position === 'Right' ? chart.legendModule.legendBounds.width : 0);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n this.seriesClipRect.x -= sum(item.farSizes);\n }\n };\n CartesianAxisLayoutPanel.prototype.measureRowAxis = function (chart, rect) {\n var row;\n this.calculateRowSize(rect);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n row = item;\n row.nearSizes = [];\n row.farSizes = [];\n row.insideNearSizes = [];\n row.insideFarSizes = [];\n this.arrangeAxis(row);\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n if (this.leftSize < sum(row.nearSizes)) {\n this.leftSize = sum(row.nearSizes);\n }\n if (this.rightSize < sum(row.farSizes)) {\n this.rightSize = sum(row.farSizes);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.measureColumnAxis = function (chart, rect) {\n var column;\n this.calculateColumnSize(rect);\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var item = _a[_i];\n column = item;\n column.farSizes = [];\n column.nearSizes = [];\n column.insideNearSizes = [];\n column.insideFarSizes = [];\n this.arrangeAxis(column);\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n if (this.bottomSize < sum(column.nearSizes)) {\n this.bottomSize = sum(column.nearSizes);\n }\n if (this.topSize < sum(column.farSizes)) {\n this.topSize = sum(column.farSizes);\n }\n }\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureDefinition = function (definition, chart, size) {\n var ele;\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n ele = axis.scrollbarSettings.height;\n axis.scrollBarHeight = chart.scrollBarModule && chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0) ? ele : 0;\n axis.scrollBarHeight = chart.scrollBarModule && (chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)\n || axis.scrollbarSettings.enable) ? ele : 0;\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n definition.computeSize(axis, axis.scrollBarHeight, definition, chart);\n }\n if (definition.farSizes.length > 0) {\n definition.farSizes[definition.farSizes.length - 1] -= axisPadding;\n }\n if (definition.nearSizes.length > 0) {\n definition.nearSizes[definition.nearSizes.length - 1] -= axisPadding;\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.calculateAxisSize = function (rect) {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var axis;\n var nearCount = 0;\n var farCount = 0;\n var size = 0;\n var x;\n var y;\n var axisOffset;\n this.calculateRowSize(rect);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_1 = row.axes.length; j < len_1; j++) {\n axis = row.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.height === 0) {\n axis.rect.height = row.computedHeight;\n size = 0;\n for (var k = i + 1, len_2 = i + axis.span; k < len_2; k++) {\n definition = chart.rows[k];\n size += definition.computedHeight;\n }\n axis.rect.y = (row.computedTop - size) + (axis.plotOffsetTop ? axis.plotOffsetTop : axisOffset);\n axis.rect.height = (axis.rect.height + size) -\n (this.getAxisOffsetValue(axis.plotOffsetTop, axis.plotOffsetBottom, axis.plotOffset));\n axis.rect.width = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + rect.width - sum(subArray(row.insideFarSizes, farCount));\n }\n else {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n }\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + sum(subArray(row.insideNearSizes, nearCount));\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\n }\n axis.rect.x = axis.rect.x <= x ? axis.rect.x : x;\n nearCount++;\n }\n }\n }\n this.calculateColumnSize(rect);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_3 = column.axes.length; j < len_3; j++) {\n axis = column.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.width === 0) {\n for (var k = i, len_4 = (i + axis.span); k < len_4; k++) {\n definition = chart.columns[k];\n axis.rect.width += definition.computedWidth;\n }\n axis.rect.x = column.computedLeft + (axis.plotOffsetLeft ? axis.plotOffsetLeft : axisOffset);\n axis.rect.width -= (this.getAxisOffsetValue(axis.plotOffsetLeft, axis.plotOffsetRight, axis.plotOffset));\n axis.rect.height = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + sum(subArray(column.insideFarSizes, farCount));\n }\n else {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n }\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + rect.height - sum(subArray(column.insideNearSizes, nearCount));\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\n }\n axis.rect.y = axis.rect.y >= y ? axis.rect.y : y;\n nearCount++;\n }\n }\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measure = function () {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var actualIndex;\n var span;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n //definition.Axes = axis;\n if (axis.orientation === 'Vertical') {\n chart.verticalAxes.push(axis);\n actualIndex = this.getActualRow(axis);\n row = chart.rows[actualIndex];\n this.pushAxis(row, axis);\n span = ((actualIndex + axis.span) > chart.rows.length ? chart.rows.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.rows[j];\n definition.axes[row.axes.length - 1] = axis;\n chart.rows[j] = definition;\n }\n chart.rows[actualIndex] = row;\n }\n else {\n chart.horizontalAxes.push(axis);\n actualIndex = this.getActualColumn(axis);\n column = chart.columns[actualIndex];\n this.pushAxis(column, axis);\n span = ((actualIndex + axis.span) > chart.columns.length ? chart.columns.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.columns[j];\n definition.axes[column.axes.length - 1] = axis;\n chart.columns[j] = definition;\n }\n chart.columns[actualIndex] = column;\n }\n axis.isRTLEnabled = chart.enableRtl;\n axis.setIsInversedAndOpposedPosition();\n }\n };\n CartesianAxisLayoutPanel.prototype.getAxisOffsetValue = function (position1, position2, plotOffset) {\n var rangeOffset = position1 ? (position1 + (position2 ? position2 :\n plotOffset)) : (position2 ? position2 + plotOffset : 2 * plotOffset);\n return rangeOffset;\n };\n CartesianAxisLayoutPanel.prototype.crossAt = function (chart) {\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (axis.crossesAt === null) {\n continue;\n }\n if (!axis.crossesInAxis) {\n if (chart.requireInvertedAxis) {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryXAxis : chart.primaryYAxis;\n }\n else {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryYAxis : chart.primaryXAxis;\n }\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n else {\n for (var i = 2, len = chart.axisCollections.length; i < len; i++) {\n if (axis.crossesInAxis === chart.axisCollections[i].name) {\n axis.crossInAxis = chart.axisCollections[i];\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.updateCrossAt = function (axis, crossAt) {\n switch (axis.valueType) {\n case 'DateTime':\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n return Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: crossAt }).val))));\n case 'Category':\n return parseFloat(crossAt) ? parseFloat(crossAt) : axis.labels.indexOf(crossAt);\n case 'Logarithmic':\n return logBase(crossAt, axis.logBase);\n default:\n return crossAt;\n }\n };\n CartesianAxisLayoutPanel.prototype.pushAxis = function (definition, axis) {\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (!definition.axes[i]) {\n definition.axes[i] = axis;\n break;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.arrangeAxis = function (definition) {\n var axisCollection = [];\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (definition.axes[i]) {\n axisCollection.push(definition.axes[i]);\n }\n }\n definition.axes = axisCollection;\n };\n CartesianAxisLayoutPanel.prototype.getActualColumn = function (axis) {\n var actualLength = this.chart.columns.length;\n var pos = axis.columnIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n CartesianAxisLayoutPanel.prototype.getActualRow = function (axis) {\n var actualLength = this.chart.rows.length;\n var pos = axis.rowIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateRowSize = function (rect) {\n /*! Calculate row size */\n var chart = this.chart;\n var row;\n var rowTop = rect.y + rect.height;\n var height = 0;\n var remainingHeight = Math.max(0, rect.height);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n if (row.height.indexOf('%') !== -1) {\n height = Math.min(remainingHeight, (rect.height * parseInt(row.height, 10) / 100));\n }\n else {\n height = Math.min(remainingHeight, parseInt(row.height, 10));\n }\n height = (i !== (len - 1)) ? height : remainingHeight;\n row.computedHeight = height;\n rowTop -= height;\n row.computedTop = rowTop;\n remainingHeight -= height;\n }\n };\n /**\n * Measure the row size.\n *\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateColumnSize = function (rect) {\n /*! Calculate column size */\n var chart = this.chart;\n var column;\n var columnLeft = rect.x;\n var width = 0;\n var remainingWidth = Math.max(0, rect.width);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n if (column.width.indexOf('%') !== -1) {\n width = Math.min(remainingWidth, (rect.width * parseInt(column.width, 10) / 100));\n }\n else {\n width = Math.min(remainingWidth, parseInt(column.width, 10));\n }\n width = (i !== (len - 1)) ? width : remainingWidth;\n column.computedWidth = width;\n column.computedLeft = columnLeft;\n columnLeft += width;\n remainingWidth -= width;\n }\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n CartesianAxisLayoutPanel.prototype.renderAxes = function () {\n var chart = this.chart;\n var axis;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisInsideCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n if (axisLineElement) {\n axisLineElement.setAttribute('aria-hidden', 'true');\n }\n var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n var axisVisibility = true;\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n if (this.element) {\n this.element.setAttribute('aria-hidden', 'true');\n }\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\n if (outsideElement) {\n outsideElement.setAttribute('aria-hidden', 'true');\n }\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (axis.name === series.yAxisName || axis.name === series.xAxisName) {\n axisVisibility = series.visible;\n if (series.category === 'Pareto' && !series.paretoOptions.showAxis && series.type === 'Line') {\n axisVisibility = false;\n }\n if (!axisVisibility) {\n continue;\n }\n else {\n break;\n }\n }\n }\n if (!axisVisibility) {\n continue;\n }\n isInside = this.findAxisPosition(axis);\n if (axis.orientation === 'Horizontal') {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, axis.plotOffset, 0, 0, 0, axis.plotOffsetLeft, axis.plotOffsetRight, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 || axis.minorGridLines.width > 0) {\n this.drawXAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawXAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n else {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, 0, axis.plotOffset, axis.plotOffsetBottom, axis.plotOffsetTop, 0, 0, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 || axis.minorGridLines.width > 0) {\n this.drawYAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawYAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n if (outsideElement && outsideElement.childNodes.length > 0) {\n axisLineElement.appendChild(outsideElement);\n }\n }\n if (chart.scrollBarModule && ((chart.zoomSettings.enableScrollbar && axis.enableScrollbarOnZooming) ||\n axis.scrollbarSettings.enable)) {\n this.renderScrollbar(chart, axis);\n }\n }\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'DefinitionLine' });\n for (var j = 0, len = chart.rows.length; j < len; j++) {\n var row = chart.rows[j];\n if (row.border.color) {\n this.drawBottomLine(row, j, true);\n }\n }\n for (var j = 0, len = chart.columns.length; j < len; j++) {\n var column = chart.columns[j];\n if (column.border.color) {\n this.drawBottomLine(column, j, false);\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n /**\n * To render the axis scrollbar\n *\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderScrollbar = function (chart, axis) {\n var isZoomed = isNullOrUndefined(chart.zoomModule) ? false : chart.zoomModule.isZoomed;\n if (((isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) || (axis.scrollbarSettings.enable &&\n (axis.zoomFactor <= 1 || axis.zoomPosition >= 0))) &&\n (!axis.zoomingScrollBar.isScrollUI)) {\n if (!chart.scrollElement) {\n chart.scrollElement = redrawElement(chart.redraw, chart.element.id + '_scrollElement') || createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n appendChildElement(false, chart.scrollElement, axis.zoomingScrollBar.render(true), true);\n }\n else if (axis.zoomFactor === 1 && axis.zoomPosition === 0 && axis.zoomingScrollBar.svgObject && !axis.scrollbarSettings.enable) {\n axis.zoomingScrollBar.destroy();\n }\n else if (axis.zoomingScrollBar.svgObject) {\n axis.zoomingScrollBar.svgObject.style.top = (axis.isAxisOpposedPosition && axis.orientation === 'Horizontal' ? -16 : 0)\n + axis.rect.y + Math.max(0.5, axis.lineStyle.width / 2) + 'px';\n axis.zoomingScrollBar.svgObject.style.left = (axis.isAxisOpposedPosition && axis.orientation !== 'Horizontal' ? 16 : 0)\n + axis.rect.x - (axis.orientation === 'Vertical' ? axis.scrollbarSettings.height : 0) + 'px';\n }\n if (axis.zoomingScrollBar.isScrollUI) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n };\n /**\n * To find the axis position\n *\n * @param {Axis} axis axis\n * @returns {boolean} axis position\n */\n CartesianAxisLayoutPanel.prototype.findAxisPosition = function (axis) {\n return axis.crossAt !== null && axis.isInside(axis.crossInAxis.visibleRange);\n };\n /**\n * To render the bootom line of the columns and rows\n *\n * @param {Row | Column} definition definition\n * @param {number} index index\n * @param {boolean} isRow isRow\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawBottomLine = function (definition, index, isRow) {\n var chart = this.chart;\n var optionsLine = {};\n var x1;\n var x2;\n var y1;\n var y2;\n var definitionName;\n if (isRow) {\n definition = definition;\n y1 = y2 = definition.computedTop + definition.computedHeight;\n x1 = this.seriesClipRect.x;\n x2 = x1 + this.seriesClipRect.width;\n definitionName = 'Row';\n }\n else {\n definition = definition;\n x1 = x2 = definition.computedLeft;\n y1 = this.seriesClipRect.y;\n y2 = y1 + this.seriesClipRect.height;\n definitionName = 'Column';\n }\n optionsLine = {\n 'id': chart.element.id + '_AxisBottom_' + definitionName + index,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n 'stroke-width': definition.border.width,\n 'stroke': definition.border.color\n };\n this.htmlObject = chart.renderer.drawLine(optionsLine);\n this.element.appendChild(this.htmlObject);\n };\n /**\n * To render the axis line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} plotX plotX\n * @param {number} plotY plotY\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxisLine = function (axis, index, plotX, plotY, plotBottom, plotTop, plotLeft, plotRight, parent, rect) {\n var chart = this.chart;\n var optionsLine = {};\n var element = getElement(chart.element.id + 'AxisLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n element = null;\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': 'M ' + (rect.x - plotX - plotLeft) + ' ' + (rect.y - plotY - plotTop) +\n ' L ' + (rect.x + rect.width + plotX + plotRight) + ' ' + (rect.y + rect.height + plotY + plotBottom),\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n this.htmlObject = chart.renderer.drawPath(optionsLine);\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction);\n };\n /**\n * To render the yAxis grid line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointY = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorGridDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = isOpposed ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? axis.lineStyle.width * 0.5 : -axis.lineStyle.width * 0.5;\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? axis.scrollBarHeight :\n -axis.scrollBarHeight : 0;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.x - tickSize - axisLineSize) : (rect.x + tickSize + axisLineSize + scrollBarHeight);\n var length = axis.visibleLabels.length;\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && length > 0 && !this.chart.stockChart) {\n length += 1;\n }\n var minorGridLines = axis.minorGridLines;\n var minorTickLines = axis.minorTickLines;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = !axis.visibleLabels[i] ? (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel\n : axis.visibleLabels[i].value - ticksbwtLabel;\n pointY = valueToCoefficient(tempInterval, axis) * rect.height;\n pointY = (pointY * -1) + (rect.y + rect.height);\n if (pointY >= rect.y && (rect.y + rect.height) >= pointY) {\n if ((inside(tempInterval, axis.visibleRange)) || this.isBorder(axis, i, pointY)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (pointY) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointY;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (rect.x + axisLineSize + (isTickInside ? scrollBarHeight : 0)) + ' ' + pointY +\n ' L ' + (ticks) + ' ' + pointY;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if ((minorGridLines.width > 0 || minorTickLines.width > 0) && axis.minorTicksPerInterval > 0) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorGridDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorGridDirection[0], minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorGridDirection[1], minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To check the border of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} value value\n * @returns {boolean} check the border of the axis\n */\n CartesianAxisLayoutPanel.prototype.isBorder = function (axis, index, value) {\n var border = this.chart.chartArea.border;\n var rect = this.seriesClipRect;\n var orientation = axis.orientation;\n var start = (orientation === 'Horizontal') ? rect.x : rect.y;\n var size = (orientation === 'Horizontal') ? rect.width : rect.height;\n var startIndex = (orientation === 'Horizontal') ? 0 : axis.visibleLabels.length - 1;\n var endIndex = (orientation === 'Horizontal') ? axis.visibleLabels.length - 1 : 0;\n if (axis.plotOffset > 0) {\n return true;\n }\n else if ((value === start || value === (start + size)) && (border.width <= 0 || border.color === 'transparent')) {\n return true;\n }\n else if ((value !== start && index === startIndex) || (value !== (start + size) && index === endIndex)) {\n return true;\n }\n return false;\n };\n /**\n * To render the yAxis label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var label;\n var pointX = 0;\n var pointY = 0;\n var elementSize;\n var labelSpace = axis.labelPadding;\n var options;\n var isAxisBreakLabel;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var RotatedWidth;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isVerticalAngle = (angle === -90 || angle === 90 || angle === 270 || angle === -270);\n padding += (isVerticalAngle) ? (isLabelInside ? 5 : -5) : 0;\n padding = (isOpposed) ? padding : -padding;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight * (isOpposed ? 1 : -1) : 0;\n var textHeight;\n var textPadding;\n var maxLineWidth;\n var pixel = 10;\n var isInverse = axis.isAxisInverse;\n var previousEnd = isInverse ? rect.y : (rect.y + rect.height);\n var labelPadding;\n var intervalLength;\n var labelHeight;\n var yAxisLabelX;\n var isLabelOnAxisLineLeft = ((!isOpposed && !isLabelInside) || (isOpposed && isLabelInside));\n if (isLabelInside) {\n labelPadding = !isLabelOnAxisLineLeft ? -padding : padding;\n }\n else {\n labelPadding = !isLabelOnAxisLineLeft ? -padding + (chart.enableRtl ? -scrollBarHeight : scrollBarHeight) : padding + (chart.enableRtl ? -scrollBarHeight : scrollBarHeight);\n }\n var sizeWidth = [];\n var breakLabelSizeWidth = [];\n axis.visibleLabels.map(function (item) {\n sizeWidth.push(item.size['width']);\n breakLabelSizeWidth.push(item.breakLabelSize['width']);\n });\n var LabelMaxWidth = Math.max.apply(Math, sizeWidth);\n var breakLabelMaxWidth = Math.max.apply(Math, breakLabelSizeWidth);\n RotatedWidth = LabelMaxWidth;\n if (angle >= -45 && angle <= 45 && angle !== 0) {\n RotatedWidth = LabelMaxWidth * Math.cos(angle * Math.PI / 180);\n if (RotatedWidth < 0) {\n RotatedWidth = -RotatedWidth;\n }\n }\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n elementSize = isAxisBreakLabel ? axis.visibleLabels[i].breakLabelSize : axis.visibleLabels[i].size;\n pointY = (valueToCoefficient(axis.visibleLabels[i].value, axis) * rect.height) + (chart.stockChart ? 7 : 0);\n pointY = Math.floor((pointY * -1) + (rect.y + rect.height));\n textHeight = ((elementSize.height / 8) * axis.visibleLabels[i].text.length / 2);\n textPadding = (chart.requireInvertedAxis && axis.labelPosition === 'Inside') ? 0 : ((elementSize.height / 4) * 3) + 3;\n intervalLength = rect.height / axis.visibleLabels.length;\n labelHeight = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle !== 0 &&\n elementSize.width > intervalLength) ? intervalLength : elementSize.width;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? pointY + textPadding : pointY));\n if (axis.labelPosition === 'Inside' && ((i === 0 && !axis.isInversed) || (i === len - 1 && axis.isInversed))) {\n if (chart.stockChart) {\n pointY -= (textPadding);\n }\n else {\n pointY -= (textPadding - ((chart.requireInvertedAxis && axis.labelPosition === 'Inside') ? 0 : (axis.opposedPosition ? -padding : padding)));\n }\n }\n if (axis.majorGridLines.width > axis.majorTickLines.width) {\n maxLineWidth = axis.majorGridLines.width;\n }\n else {\n maxLineWidth = axis.majorTickLines.width;\n }\n if (axis.labelStyle.textAlignment === 'Far') {\n pointY = pointY - maxLineWidth - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointY = pointY + maxLineWidth + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointY = pointY;\n }\n // label X value adjustment (Start)\n if (isLabelInside) {\n yAxisLabelX = labelPadding + ((angle === 0 ? elementSize.width : (isAxisBreakLabel ? breakLabelMaxWidth : LabelMaxWidth)) / 2);\n }\n else {\n yAxisLabelX = labelPadding - ((angle === 0 ? elementSize.width : (isAxisBreakLabel ? breakLabelMaxWidth : RotatedWidth)) / 2);\n }\n pointX = isOpposed ? (rect.x - yAxisLabelX) : (rect.x + yAxisLabelX);\n if (isVerticalAngle) {\n pointX += (isOpposed) ? -10 : 10;\n }\n yAxisLabelX = labelPadding;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, 'middle', label.text, '', 'middle', angle);\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y) ||\n (((i === len - 1) || (isInverse && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (isInverse && i === 0)) && (options.y < rect.y)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n // ------- Hide Calculation (Start) -------------\n var previousYValue = options.y;\n var currentYValue = options.y - labelHeight;\n if (isAxisBreakLabel) {\n previousYValue = (options.y - (labelHeight / 2));\n currentYValue = options.y + (labelHeight / 2);\n }\n if ((angle === 90 || angle === 270) && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? previousYValue >= previousEnd : currentYValue <= previousEnd)) {\n continue;\n }\n previousEnd = isInverse ? previousYValue : currentYValue;\n // ------- Hide Calculation (End) -------------\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n appendChildElement(chart.enableCanvas, parent, labelElement, chart.redraw);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get X value based on lineBreakAlignment for Y axis line break labels only.\n *\n * @param {number} x text x position\n * @param {Axis} axis y axis values\n * @param {number} textWidth axis label width\n * @returns {number} returns suitable axis label x position\n */\n CartesianAxisLayoutPanel.prototype.getAxisLabelXvalue = function (x, axis, textWidth) {\n var anchor = axis.lineBreakAlignment;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n if ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) {\n return (anchor === 'Right' ? x : (anchor === 'Center' ? (x - textWidth / 2) : (x - textWidth)));\n }\n else {\n return (anchor === 'Left' ? x : (anchor === 'Center' ? (x + textWidth / 2) : (x + textWidth)));\n }\n };\n /**\n * To render the yAxis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisBorder = function (axis, index, parent, rect) {\n if (axis.border.width > 0) {\n var startY = void 0;\n var pointY = void 0;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n scrollBarHeight = (isOpposed ? 1 : -1) * scrollBarHeight;\n var gap = (rect.height / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endY = void 0;\n var length_1 = axis.maxLabelSize.width + 10 + ((axis.tickPosition === axis.labelPosition) ?\n axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endX = ((isOpposed && axis.labelPosition === 'Inside') || (!isOpposed\n && axis.labelPosition === 'Outside')) ? rect.x - length_1 + scrollBarHeight : rect.x + length_1 + scrollBarHeight;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointY = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointY = (axis.isAxisInverse ? (1 - pointY) : pointY) * rect.height;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startY = (pointY * -1) + (rect.y + rect.height);\n endY = (pointY * -1) - (gap) + (rect.y + rect.height);\n }\n else {\n startY = (pointY * -1) + gap / 2 + (rect.y + rect.height);\n endY = (pointY * -1) - gap / 2 + (rect.y + rect.height);\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startY > (rect.y + rect.height)) {\n labelBorder += ('M' + ' ' + endX + ' ' + (rect.y + rect.height) + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(rect.y) > (endY)) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX\n + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + (rect.y) + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY + ' ' + 'L' + ' ' +\n endX + ' ' + endY + ' ');\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startY > rect.y + rect.height) && !((endY) < Math.floor(rect.y))) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'M' + ' ' + endX + ' ' + endY + ' ' +\n 'L' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle') ? ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + rect.y + ' ' + 'L' + ' ' +\n (rect.x + scrollBarHeight) + ' ' + (rect.y + rect.height) + ' ') : '';\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n for (var i = 0; i < this.chart.visibleSeries.length; i++) {\n if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule && this.chart.visibleSeries[i].visible) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\n break;\n }\n }\n };\n /**\n * To render the yAxis title\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var isRotated = false;\n var isOpposed = axis.isAxisOpposedPosition;\n var labelRotation = (axis.titleRotation == null ? (isOpposed ? 90 : -90) : axis.titleRotation) % 360;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n (axis.maxLabelSize.width + axis.multiLevelLabelHeight + this.padding));\n padding = isOpposed ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n if ((labelRotation !== -90 && !isOpposed) || (labelRotation !== 90 && isOpposed)) {\n padding += axis.isAxisOpposedPosition ? axis.titleSize.width / 2 + axis.labelPadding : -axis.titleSize.width / 2 - axis.labelPadding;\n isRotated = true;\n }\n var x = rect.x + padding;\n var y = void 0;\n var anchor = void 0;\n if (axis.titleStyle.textAlignment === 'Center') {\n anchor = 'middle';\n y = rect.y + rect.height * 0.5;\n }\n else if (axis.titleStyle.textAlignment === 'Near') {\n anchor = axis.opposedPosition ? 'end' : 'start';\n y = rect.height + rect.y;\n }\n else {\n anchor = axis.opposedPosition ? 'start' : 'end';\n y = rect.y;\n }\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y + (isRotated ? -titleSize : -axis.labelPadding - titleSize), anchor, axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont);\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * xAxis grid line calculation performed here\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointX = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = (isOpposed) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && !this.chart.stockChart) ?\n 0.5 : 0;\n var length = axis.visibleLabels.length;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.y - tickSize - axisLineSize) : (rect.y + tickSize + axisLineSize + scrollBarHeight);\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && length > 0 && axis.labelPlacement === 'BetweenTicks' && !this.chart.stockChart) {\n length += 1;\n }\n //Gridlines\n for (var i = 0; i < length; i++) {\n if (axis.valueType !== 'DateTimeCategory') {\n tempInterval = axis.visibleLabels[i] ? axis.visibleLabels[i].value - ticksbwtLabel\n : (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel;\n }\n else {\n tempInterval = axis.visibleLabels[i] ?\n axis.visibleLabels[i].value - ticksbwtLabel : axis.visibleRange.max;\n }\n pointX = (valueToCoefficient(tempInterval, axis) * rect.width) + rect.x;\n if (pointX >= rect.x && (rect.x + rect.width) >= pointX) {\n if (inside(tempInterval, axis.visibleRange) || this.isBorder(axis, i, pointX)) {\n majorGrid = 'M ' + pointX + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointX + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (pointX) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointX) + ' ' + ticks;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To render missing minor grid lines while zooming\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} i i\n * @param {number} index index\n * @param {IThemeStyle} chartThemeStyle chartThemeStyle\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderMinorGridOnZooming = function (axis, tempInterval, rect, i, index, chartThemeStyle, parent) {\n var minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i, true);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', -1, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', -1, parent, chartThemeStyle.minorTickLine);\n };\n /**\n * To calcualte the axis minor line\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {string[]} axis minor line path\n */\n CartesianAxisLayoutPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, rect, labelIndex, isFirstLabel) {\n var value = tempInterval;\n var coor = 0;\n var position = 0;\n var range = axis.visibleRange;\n var isTickInside = axis.tickPosition === 'Inside';\n var direction = [];\n var tickSize = axis.isAxisOpposedPosition ? -axis.minorTickLines.height : axis.minorTickLines.height;\n var logStart;\n var logEnd;\n var logInterval = 1;\n var logPosition = 1;\n var ticksX = isTickInside ? (rect.y - tickSize) : (rect.y + tickSize);\n var ticksY = isTickInside ? (rect.x + tickSize) : (rect.x - tickSize);\n var minorGird = '';\n var minorTick = '';\n var isInverse = axis.isAxisInverse;\n if (axis.valueType === 'Logarithmic') {\n logStart = Math.pow(axis.logBase, value - range.interval);\n logEnd = Math.pow(axis.logBase, value);\n logInterval = (logEnd - logStart) / (axis.minorTicksPerInterval + 1);\n logPosition = logStart + logInterval;\n }\n if (axis.orientation === 'Horizontal') {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n logPosition += logInterval;\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil((isInverse ? (1 - position) : position) * rect.width);\n coor = (Math.floor(position + rect.x));\n minorGird = minorGird.concat('M' + ' ' + coor + ' ' + (this.seriesClipRect.y)\n + 'L ' + coor + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height));\n coor = (Math.floor(position + rect.x));\n minorTick = minorTick.concat('M' + ' ' + coor + ' ' + (rect.y)\n + 'L ' + coor + ' ' + (ticksX + axis.scrollBarHeight));\n }\n }\n }\n else {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil(((isInverse ? (1 - position) : position)) * rect.height) * -1; // For inversed axis\n coor = (Math.floor(position + rect.y + rect.height));\n minorGird = minorGird.concat('M' + ' ' + (this.seriesClipRect.x) + ' ' + coor\n + 'L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + coor + ' ');\n coor = (Math.floor(position + rect.y + rect.height));\n minorTick = minorTick.concat('M' + ' ' + rect.x + ' ' + coor + 'L ' + (ticksY - axis.scrollBarHeight) +\n ' ' + coor + ' ');\n }\n logPosition += logInterval;\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To find the numeric value of the log\n *\n * @param {Axis} axis axis\n * @param {number} logPosition logPosition\n * @param {number} value value\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {number} value\n */\n CartesianAxisLayoutPanel.prototype.findLogNumeric = function (axis, logPosition, value, labelIndex, isFirstLabel) {\n var range = axis.visibleRange;\n var tempValue;\n if (axis.valueType === 'Logarithmic') {\n value = logBase(logPosition, axis.logBase);\n }\n else if (axis.valueType === 'DateTime') {\n tempValue = axis.dateTimeInterval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n else if (axis.valueType === 'DateTimeCategory') {\n var padding = axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n value += ((axis.visibleLabels[labelIndex + 1] ?\n axis.visibleLabels[labelIndex + 1].value - padding : axis.visibleRange.max) -\n (axis.visibleLabels[labelIndex] ?\n axis.visibleLabels[labelIndex].value - padding : axis.visibleRange.min)) /\n (axis.minorTicksPerInterval + 1);\n }\n else {\n tempValue = range.interval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n return value;\n };\n /**\n * To render the xAxis Labels\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelSpace = axis.labelPadding;\n var labelHeight;\n var elementSize;\n var labelPadding;\n var anchor;\n var pixel = 10;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var islabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isHorizontalAngle = (angle === 0 || angle === -180 || angle === 180);\n var options;\n var labelWidth;\n var isInverse = axis.isAxisInverse;\n var isLeft;\n var previousEnd = isInverse ? (rect.x + rect.width) : rect.x;\n var width = 0;\n var length = axis.visibleLabels.length;\n var intervalLength;\n var label;\n var isAxisBreakLabel;\n var scrollBarHeight = axis.scrollbarSettings.enable || (!islabelInside && isNullOrUndefined(axis.crossesAt)\n && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) ? axis.scrollBarHeight : 0;\n var newPoints = [];\n var isRotatedLabelIntersect = false;\n var textPoints = [];\n var rotatedLabelSize = new Size(0, 0);\n padding += (angle === 90 || angle === 270 || angle === -90 || angle === -270) ? (islabelInside ? 5 : -5) : 0;\n var isLabelUnderAxisLine = ((!isOpposed && !islabelInside) || (isOpposed && islabelInside));\n var isEndAnchor = isLabelUnderAxisLine ?\n ((360 >= angle && angle >= 180) || (-1 >= angle && angle >= -180)) :\n ((1 <= angle && angle <= 180) || (-181 >= angle && angle >= -360));\n for (var i = 0, len = length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(label.originalText) || (axis.labelIntersectAction === 'Wrap' && label.text.length > 1);\n pointX = (valueToCoefficient(label.value, axis) * rect.width) + rect.x;\n elementSize = label.size;\n intervalLength = rect.width / length;\n labelWidth = isAxisBreakLabel ? label.breakLabelSize.width : elementSize.width;\n width = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle === 0 &&\n labelWidth > intervalLength) ? intervalLength : labelWidth;\n labelHeight = elementSize.height / 4;\n pointX -= (isAxisBreakLabel || angle !== 0) ? 0 : (width / 2);\n // label X value adjustment for label rotation (Start)\n if (angle !== 0) {\n if (isAxisBreakLabel) {\n pointX -= axis.lineBreakAlignment === 'Left' ? (label.breakLabelSize.width / 2) : axis.lineBreakAlignment === 'Right' ?\n -(label.breakLabelSize.width / 2) : 0;\n }\n else {\n pointX -= (angle === -90 || angle === 270 ? -labelHeight : (angle === 90 || angle === -270) ? labelHeight : 0);\n }\n }\n // label X value adjustment for label rotation (End)\n if (axis.labelStyle.textAlignment === 'Far') {\n pointX = pointX + width - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointX = pointX - width + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointX = pointX;\n }\n // For line break label alignment like left, right & center in angle 0\n if (isAxisBreakLabel && axis.lineBreakAlignment !== 'Center' && angle === 0) {\n pointX += axis.lineBreakAlignment === 'Left' ? -(width / 2) : (width / 2);\n }\n var paddingForBreakLabel = isAxisBreakLabel ?\n (isHorizontalAngle ? (axis.opposedPosition || islabelInside ? 0 : elementSize.height) : (label.breakLabelSize.width / 2)) : 0;\n padding = isAxisBreakLabel ? (tickSpace + labelSpace + axis.lineStyle.width * 0.5) : padding;\n // label Y value adjustment (Start)\n if (islabelInside && angle) {\n if (isAxisBreakLabel) {\n pointY = isOpposed ? (rect.y + padding + (paddingForBreakLabel)) : (rect.y - padding - (paddingForBreakLabel));\n }\n else {\n pointY = isOpposed ? (rect.y + padding + labelHeight) : (rect.y - padding - labelHeight);\n }\n }\n else {\n if (isAxisBreakLabel) {\n labelPadding = !isLabelUnderAxisLine ? -(padding + scrollBarHeight + (paddingForBreakLabel)) :\n padding + scrollBarHeight + (angle ? paddingForBreakLabel : (3 * labelHeight));\n }\n else {\n labelPadding = !isLabelUnderAxisLine ?\n -(padding + scrollBarHeight + (angle ? labelHeight : (label.index > 1 ? (2 * labelHeight) : 0))) :\n padding + scrollBarHeight + ((angle ? 1 : 3) * labelHeight);\n }\n pointY = (rect.y + (labelPadding * label.index));\n }\n // label Y value adjustment (End)\n if (isAxisBreakLabel) {\n anchor = this.getAnchor(axis); // for break label self alignment\n }\n else {\n anchor = (chart.enableRtl) ? ((isEndAnchor) ? '' : 'end') : (chart.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n if (angle !== 0) {\n rotatedLabelSize = rotateTextSize(label.labelStyle, label.originalText, angle, chart);\n isLeft = ((angle < 0 && angle > -90) || (angle < -180 && angle > -270) || (angle > 90 && angle < 180) || (angle > 270 && angle < 360));\n }\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (isInverse && i === 0)) && (options.x + (angle === 0 ? width : rotatedLabelSize.width) > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && (options.x < rect.x || (angle !== 0 && isLeft && options.x - rotatedLabelSize.width <= rect.x) || (axis.lineBreakAlignment === 'Center' && options.x - (label.size.width / label.text.length) / 2 < rect.x && angle === 0))) {\n intervalLength -= (rect.x - options.x);\n if (anchor === '' && !isInverse && angle === 0) {\n if (options.x <= 0) {\n pointX = options.x = 0;\n }\n else {\n pointX = options.x;\n }\n intervalLength = rect.width / length;\n }\n else if (isLeft && angle !== 0) {\n intervalLength = rect.width / length;\n if (intervalLength > rect.x + rotatedLabelSize.width) {\n options.x = pointX = rect.x + rotatedLabelSize.width;\n }\n else {\n options.x = pointX = rect.x + intervalLength - padding;\n }\n }\n else if (isAxisBreakLabel && axis.lineBreakAlignment === 'Center' && axis.labelPlacement === 'OnTicks' && angle === 0) {\n var maxWidth = 0;\n for (var i_1 = 0; i_1 < label.text.length; i_1++) {\n var breakLabelWidth = measureText(label.text[i_1], axis.labelStyle, chart.themeStyle.axisLabelFont).width;\n if (breakLabelWidth > maxWidth) {\n maxWidth = breakLabelWidth;\n }\n }\n options.x = pointX = rect.x + maxWidth / 2;\n }\n else if (!(anchor === 'start' && options.x > 0)) {\n options.x = pointX = !isHorizontalAngle ? rect.x + padding : rect.x;\n }\n }\n else if ((i === len - 1 || (isInverse && i === 0)) && (((options.x + width) > rect.x + rect.width && anchor !== 'end' && angle === 0) || (angle !== 0 && !isLeft && (options.x + rotatedLabelSize.width) > rect.x + rect.width) || (anchor === 'end' && options.x > rect.x + rect.width))) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim' && angle === 0) {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else if (angle !== 0) {\n if (rotatedLabelSize.width < intervalLength) {\n intervalLength = rotatedLabelSize.width;\n }\n }\n else {\n intervalLength = width;\n }\n if (angle !== 0) {\n options.x = pointX = rect.x + rect.width - intervalLength + padding;\n }\n else {\n options.x = pointX = !isHorizontalAngle ? rect.x + rect.width - intervalLength / 2 : rect.x + rect.width - intervalLength;\n }\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\n options.labelRotation = angle;\n // ------- Hide Calculation (Start) -------------\n // Currect label actual start value (Start)\n var xValue = void 0;\n var xValue2 = void 0;\n if (isAxisBreakLabel && angle === 0) {\n if (axis.lineBreakAlignment === 'Right') {\n xValue = (options.x - width);\n xValue2 = options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n xValue = (options.x - (width / 2));\n xValue2 = options.x + (width / 2);\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n // Currect label actual start value (End)\n if (angle === 0 && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = isInverse ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = isInverse ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n // Previous label actual end value (End)\n // ------- Hide Calculation (End) -------------\n // label Rotataion calculation (Start)\n if (angle !== 0) {\n var height = void 0;\n var rect_1 = void 0;\n if (isAxisBreakLabel) {\n var xAdjustment = 0;\n var yAdjustment = 0;\n height = (label.breakLabelSize.height);\n yAdjustment = (label.breakLabelSize.height) - 4; // 4 for label bound correction\n // xAdjustment (Start)\n if (axis.lineBreakAlignment === 'Center') {\n xAdjustment = -(label.breakLabelSize.width / 2);\n }\n else if (axis.lineBreakAlignment === 'Right') {\n xAdjustment = -label.breakLabelSize.width;\n }\n // xAdjustment (End)\n if (isLabelUnderAxisLine) {\n yAdjustment = (label.breakLabelSize.height) / (options.text.length + 1);\n }\n rect_1 = new Rect(options.x + xAdjustment, options.y - (yAdjustment), label.breakLabelSize.width, height);\n }\n else {\n height = (pointY) - (options.y - ((label.size.height / 2)));\n rect_1 = new Rect(options.x, options.y - ((label.size.height / 2) - 5), label.size.width, height);\n }\n var rectCoordinates = this.getRectanglePoints(rect_1);\n var rectCenterX = isAxisBreakLabel ? rect_1.x + (rect_1.width / 2) : pointX;\n var rectCenterY = isAxisBreakLabel ? rect_1.y + (rect_1.height / 2) : (pointY - (height / 2));\n if (isAxisBreakLabel) {\n options.transform = 'rotate(' + angle + ',' + rectCenterX + ',' + rectCenterY + ')';\n }\n else {\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n }\n newPoints.push(getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle));\n isRotatedLabelIntersect = false;\n if (axis.labelIntersectAction !== 'None') {\n for (var index_1 = i; index_1 > 0; index_1--) {\n if (newPoints[i] && newPoints[index_1 - 1] && isRotatedRectIntersect(newPoints[i], newPoints[index_1 - 1])) {\n isRotatedLabelIntersect = true;\n newPoints[i] = null;\n break;\n }\n }\n }\n var rotateAngle = ((angle > 0 && angle < 90) || (angle > 180 && angle < 270) || (angle < -90 && angle > -180) || (angle < -270 && angle > -360));\n var textRect = new Rect(options.x, options.y - (elementSize.height / 2 + padding / 2), label.size.width, height);\n var textRectCoordinates = this.getRectanglePoints(textRect);\n var rectPoints = [];\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y));\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y + axis.maxLabelSize.height));\n textPoints.push(getRotatedRectangleCoordinates(textRectCoordinates, rectCenterX, rectCenterY, angle));\n var newRect = new Rect(0, axis.rect.y, this.chart.availableSize.width, axis.maxLabelSize.height * 2);\n for (var k = 0; k < textPoints[i].length; k++) {\n if (!axis.opposedPosition && !withInBounds(textPoints[i][k].x, textPoints[i][k].y, newRect) && typeof options.text === 'string') {\n var interSectPoint = this.calculateIntersection(textPoints[i][0], textPoints[i][1], rectPoints[0], rectPoints[1]);\n var rectPoint1 = rotateAngle ? this.chart.availableSize.width - pointX : pointX;\n var rectPoint2 = interSectPoint.y - axis.rect.y;\n var trimValue = Math.sqrt((rectPoint1 * rectPoint1) + (rectPoint2 * rectPoint2));\n options.text = textTrim(trimValue, label.text, label.labelStyle, chart.enableRtl, chart.themeStyle.axisLabelFont);\n }\n }\n }\n // label Rotataion calculation (End)\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, (axis.isAxisOpposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, null, null, label.size, isRotatedLabelIntersect, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n parent.appendChild(labelElement);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateIntersection = function (p1, p2, p3, p4) {\n var c2x = p3.x - p4.x;\n var c3x = p1.x - p2.x;\n var c2y = p3.y - p4.y;\n var c3y = p1.y - p2.y;\n var d = c3x * c2y - c3y * c2x;\n var u1 = p1.x * p2.y - p1.y * p2.x;\n var u4 = p3.x * p4.y - p3.y * p4.x;\n var px = (u1 * c2x - c3x * u4) / d;\n var py = (u1 * c2y - c3y * u4) / d;\n var p = { x: px, y: py };\n return p;\n };\n /**\n * To get text anchor value for line break labels.\n *\n * @param {Axis} axis axis model\n * @returns {string} returns text anchor\n */\n CartesianAxisLayoutPanel.prototype.getAnchor = function (axis) {\n return (axis.lineBreakAlignment === 'Center' ? 'middle' : (this.chart.enableRtl) ? (axis.lineBreakAlignment === 'Left' ? 'end' : 'start') : (axis.lineBreakAlignment === 'Left' ? 'start' : 'end'));\n };\n /**\n * Get rect coordinates\n *\n * @param {Rect} rect rect\n * @returns {ChartLocation[]} rectangle points\n */\n CartesianAxisLayoutPanel.prototype.getRectanglePoints = function (rect) {\n var point1 = new ChartLocation(rect.x, rect.y);\n var point2 = new ChartLocation(rect.x + rect.width, rect.y);\n var point3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var point4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [point1, point2, point3, point4];\n };\n /**\n * To get axis label text\n *\n * @param {VisibleLabels} label label\n * @param {Axis} axis axis\n * @param {number} intervalLength intervalLength\n * @returns {string | string[]} label or label collection\n */\n CartesianAxisLayoutPanel.prototype.getLabelText = function (label, axis, intervalLength) {\n if (isBreakLabel(label.originalText)) {\n var result = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n str = this.findAxisLabel(axis, label.text[index], intervalLength);\n result.push(str);\n }\n return result;\n }\n else {\n return this.findAxisLabel(axis, label.text, intervalLength);\n }\n };\n /**\n * To render the x-axis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} axisRect axisRect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisBorder = function (axis, index, parent, axisRect) {\n if (axis.border.width > 0) {\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n var startX = void 0;\n var startY = axisRect.y + ((isOpposed ? -1 : 1) * scrollBarHeight);\n var padding = 10;\n var pointX = void 0;\n var gap = (axisRect.width / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endX = void 0;\n var length_2 = axis.maxLabelSize.height +\n ((axis.tickPosition === axis.labelPosition) ? axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endY = ((isOpposed && axis.labelPosition === 'Inside') ||\n (!isOpposed && axis.labelPosition === 'Outside')) ?\n (axisRect.y + length_2 + padding + scrollBarHeight) : (axisRect.y - length_2 - padding - scrollBarHeight);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointX = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointX = (axis.isAxisInverse ? (1 - pointX) : pointX) * axisRect.width;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startX = pointX + axisRect.x;\n endX = pointX + (gap) + axisRect.x;\n }\n else {\n startX = pointX - gap * 0.5 + axisRect.x;\n endX = pointX + gap * 0.5 + axisRect.x;\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startX < axisRect.x && axis.labelPlacement !== 'OnTicks') {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1) && !(i === axis.visibleLabels.length - 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\n startX = (i === 0 && axis.labelPlacement === 'OnTicks') ? axisRect.x : startX;\n endX = ((i === axis.visibleLabels.length - 1) && axis.labelPlacement === 'OnTicks') ? endX - gap * 0.5 : endX;\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' +\n endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === 0) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + startX + ' ' + endY + ' L ' + (axisRect.x) + ' ' + endY);\n }\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + endX + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + endY + ' L ' + (axisRect.width + axisRect.x) + ' ' + endY);\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startX < axisRect.x) && !(Math.floor(endX) > axisRect.width + axisRect.x)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + startY + ' L ' + endX + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle' ? ('M ' + ' ' + axisRect.x + ' ' + startY + 'L' + ' ' +\n (axisRect.x + axisRect.width) + ' ' + startY) : '');\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n for (var i = 0; i < this.chart.visibleSeries.length; i++) {\n if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0 && this.chart.visibleSeries[i].visible) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\n break;\n }\n }\n };\n /**\n * To create border element of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} labelBorder labelBorder\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createAxisBorderElement = function (axis, index, labelBorder, parent) {\n var element = getElement(this.chart.element.id + '_BorderLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + '_BorderLine_' + index, 'transparent', axis.border.width, axis.border.color || this.chart.themeStyle.axisLine, 1, '', labelBorder));\n borderElement.style.pointerEvents = 'none';\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, false, 'x', 'y', null, direction, true);\n };\n /**\n * To find the axis label of the intersect action\n *\n * @param {Axis} axis axis\n * @param {string} label label\n * @param {number} width width\n * @returns {string} label\n */\n CartesianAxisLayoutPanel.prototype.findAxisLabel = function (axis, label, width) {\n return (axis.labelIntersectAction === 'Trim' ?\n ((axis.angle % 360 === 0 && !axis.enableTrim) ? textTrim(width, label, axis.labelStyle, this.chart.enableRtl, this.chart.themeStyle.axisLabelFont) : label) : label);\n };\n /**\n * X-Axis Title function performed\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var elementSize = measureText(axis.title, axis.titleStyle, this.chart.themeStyle.axisTitleFont);\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n axis.maxLabelSize.height + axis.multiLevelLabelHeight + axis.labelPadding);\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n padding = axis.isAxisOpposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var labelRotation = axis.titleRotation ? axis.titleRotation : 0;\n var x = void 0;\n var y = rect.y + padding;\n var anchor = void 0;\n if (axis.titleStyle.textAlignment === 'Center') {\n anchor = 'middle';\n x = rect.x + rect.width * 0.5;\n }\n else if (axis.titleStyle.textAlignment === 'Near') {\n anchor = 'start';\n x = rect.x;\n }\n else {\n anchor = 'end';\n x = rect.x + rect.width;\n }\n if (labelRotation !== 0) {\n y += axis.opposedPosition ? -(axis.titleSize.height / 2 + elementSize.height / 4) :\n axis.titleSize.height / 2 - elementSize.height / 4;\n }\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y, anchor, axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont);\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * To render the axis grid and tick lines(Both Major and Minor)\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {MajorTickLinesModel | MinorTickLinesModel | MajorGridLinesModel | MinorGridLinesModel} gridModel gridModel\n * @param {string} gridId gridId\n * @param {number} gridIndex gridIndex\n * @param {Element} parent parent\n * @param {string} themeColor themeColor\n * @param {string} dashArray dashArray\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderGridLine = function (axis, index, gridDirection, gridModel, gridId, gridIndex, parent, themeColor, dashArray) {\n if (dashArray === void 0) { dashArray = null; }\n var chart = this.chart;\n var direction;\n var element;\n if (gridModel.width > 0 && axis.visible && axis.internalVisibility && gridDirection) {\n element = getElement(chart.element.id + gridId + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n element = null;\n this.htmlObject = chart.renderer.drawPath(new PathOption(chart.element.id + gridId + index + '_' + gridIndex, 'transparent', gridModel.width, gridModel.color || themeColor, null, dashArray, gridDirection));\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, true);\n }\n };\n /**\n * To Find the parent node of the axis\n *\n * @param {string} elementId elementId\n * @param {Element} label label\n * @param {number} index index\n * @returns {Element} parent node of the axis\n */\n CartesianAxisLayoutPanel.prototype.findParentNode = function (elementId, label, index) {\n if (document.getElementById(elementId + 'AxisGroup' + index + 'Inside').contains(document.getElementById(label.id))) {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Inside');\n }\n else {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Outside');\n }\n };\n /**\n * Create Zooming Labels Function Called here\n *\n * @param {Chart} chart chart\n * @param {Element} labelElement labelElement\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createZoomingLabel = function (chart, labelElement, axis, index, rect) {\n var parentNode = this.findParentNode(chart.element.id, labelElement, index);\n labelElement.setAttribute('opacity', '0.3');\n var zoomElement = chart.renderer.createGroup({\n id: chart.element.id + 'AxisLabels_Zoom' + index\n });\n zoomElement = createZoomingLabels(chart, axis, zoomElement, index, axis.orientation === 'Vertical', rect);\n parentNode.replaceChild(labelElement, document.getElementById(labelElement.id));\n if (getElement(chart.element.id + 'AxisLabels_Zoom' + index)) {\n parentNode.replaceChild(zoomElement, document.getElementById(zoomElement.id));\n }\n else {\n parentNode.appendChild(zoomElement);\n }\n };\n return CartesianAxisLayoutPanel;\n}());\nexport { CartesianAxisLayoutPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/check-param-names */\n/* eslint-disable jsdoc/require-param-type */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-param-description */\n/* eslint-disable valid-jsdoc */\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { withInBounds, PointData, stopTimer } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor } from '../../common/utils/helper';\n/**\n * Marker Module used to render the marker for line type series.\n */\nvar MarkerExplode = /** @class */ (function (_super) {\n __extends(MarkerExplode, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function MarkerExplode(chart) {\n var _this = _super.call(this, chart) || this;\n _this.elementId = chart.element.id;\n _this.commonXvalues = [];\n return _this;\n }\n /**\n * @hidden\n */\n MarkerExplode.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseUpHandler = function () {\n var chart = this.chart;\n if (chart.isTouch && !chart.crosshair.enable && !this.isSelected(chart)) {\n this.markerMove(true);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if ((chart.highlightMode !== 'None' || (chart.tooltip.enable)) && (!chart.isTouch || chart.startMove) && !this.isSelected(chart)) {\n this.markerMove(false);\n }\n };\n MarkerExplode.prototype.markerMove = function (remove) {\n var _this = this;\n var chart = this.chart;\n this.currentPoints = [];\n var data;\n var previous;\n var explodeSeries;\n var series;\n if (!chart.tooltip.shared || !chart.tooltip.enable) {\n data = this.getData();\n series = data.series;\n previous = this.previousPoints[0];\n explodeSeries = series && ((series.type === 'Bubble' || series.drawType === 'Scatter' || series.type === 'Scatter') ||\n (((series.type !== 'Candle') && (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose')) &&\n (series.marker.visible && series.marker.width !== 0 && series.marker.height !== 0)));\n data.lierIndex = this.lierIndex;\n if (data.point && explodeSeries && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex))) {\n this.currentPoints.push(data);\n }\n if (data.point && explodeSeries && chart.isPointMouseDown) {\n this.currentPoints.push(data);\n }\n }\n else {\n if (!withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n return null;\n }\n if (chart.tooltip.enable) {\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n if (!this.chart.tooltip.showNearestPoint) {\n this.currentPoints = this.chart.tooltipModule.currentPoints;\n }\n else {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var chartSeries = _a[_i];\n if (!chartSeries.enableTooltip || chartSeries.category === 'Indicator') {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && chartSeries.visible) {\n data = this.getClosestX(chart, chartSeries, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && chartSeries.visible && pointData.point !== null) {\n data = new PointData(chartSeries.points[pointData.point.index], chartSeries);\n }\n if (data) {\n this.currentPoints.push(data);\n data = null;\n }\n }\n }\n }\n }\n var length = this.previousPoints.length;\n if (this.currentPoints.length > 0 || (length > 0 && chart.tooltip.shared)) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && (this.currentPoints.length == 0 || (this.previousPoints[0].point !== this.currentPoints[0].point)))) {\n if (length > 0) {\n for (var _b = 0, _c = this.previousPoints; _b < _c.length; _b++) {\n var previousPoint = _c[_b];\n if (!isNullOrUndefined(previousPoint)) {\n this.removeHighlightedMarker(previousPoint.series, previousPoint.point);\n }\n }\n }\n var _loop_1 = function (data_1) {\n if ((data_1 && data_1.point) || ((series.type !== 'Candle') &&\n (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose'))) {\n stopTimer(this_1.markerExplode);\n this_1.isRemove = true;\n data_1.point.symbolLocations.map(function (location, index) {\n if (data_1.series.marker.allowHighlight && (!data_1.series.isRectSeries || data_1.point.marker.visible)) {\n _this.drawTrackBall(data_1.series, data_1.point, location, index);\n }\n });\n }\n };\n var this_1 = this;\n for (var _d = 0, _e = this.currentPoints; _d < _e.length; _d++) {\n var data_1 = _e[_d];\n _loop_1(data_1);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n }\n }\n if (!chart.tooltip.enable && ((this.currentPoints.length === 0 && this.isRemove) || (remove && this.isRemove) ||\n !withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect))) {\n this.isRemove = false;\n if (!isNullOrUndefined(this.previousPoints[0])) {\n this.markerExplode = +setTimeout(function () {\n if (_this.previousPoints[0]) {\n _this.removeHighlightedMarker(_this.previousPoints[0].series, _this.previousPoints[0].point);\n }\n }, 2000);\n }\n }\n this.currentPoints = [];\n };\n MarkerExplode.prototype.animationDuration = function () {\n var duration = 200;\n if (this.chart.maxPointCount > 100) {\n duration = 10;\n }\n else if (this.chart.maxPointCount > 50) {\n duration = 100;\n }\n return duration;\n };\n MarkerExplode.prototype.drawTrackBall = function (series, point, location, index) {\n var marker = point.marker;\n var seriesMarker = series.marker;\n var shape = marker.shape || seriesMarker.shape || 'Circle';\n var svg;\n if (shape === 'None' || shape === 'Image') {\n return null;\n }\n var element = series.symbolElement || series.seriesElement;\n var className;\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n className = this.chart.highlightModule.generateStyle(series);\n }\n if (this.chart.selectionModule && this.chart.selectionMode !== 'None') {\n className = this.chart.selectionModule.generateStyle(series);\n }\n var symbolId = this.elementId + '_Series_' + series.index + '_Point_' + point.index + '_Trackball' +\n (index ? index : '');\n var size = new Size((marker.width || seriesMarker.width) + 3, (marker.height || seriesMarker.height) + 3);\n var border = (marker.border || series.border);\n var explodeSeries = (series.type === 'BoxAndWhisker' || series.type === 'Bubble' || series.type === 'Scatter');\n var borderColor = (border.color && border.color !== 'transparent') ? border.color :\n marker.fill || point.interior || (explodeSeries ? point.color : series.interior);\n var colorValue = convertHexToColor(colorNameToHex(borderColor));\n var borderWidth = marker.border ? marker.border.width : seriesMarker.border.width;\n var markerShadow = series.chart.themeStyle.markerShadow ||\n 'rgba(' + colorValue.r + ',' + colorValue.g + ',' + colorValue.b + ',0.2)';\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'hidden');\n }\n if (this.chart.enableCanvas) {\n var trackElement = document.getElementById(this.chart.element.id + '_Secondary_Element');\n svg = this.chart.svgRenderer.createSvg({\n id: this.chart.element.id + '_trackball_svg',\n width: this.chart.availableSize.width,\n height: this.chart.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n trackElement.appendChild(svg);\n }\n for (var i = 0; i < 2; i++) {\n var options = new PathOption(symbolId + '_' + i, i ? (marker.fill || point.color || (explodeSeries ? series.interior : '#ffffff')) : 'transparent', borderWidth + (i ? 0 : 8), i ? borderColor : markerShadow, (marker.opacity || seriesMarker.opacity), null, null);\n var symbol = drawSymbol(location, shape, size, marker.imageUrl, options, '', this.chart.svgRenderer, series.clipRect);\n // incident: 252450 point click selection not working while maker explode\n //symbol.setAttribute('style', 'pointer-events:none');\n symbol.setAttribute('class', this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n var selectionId = element.id.indexOf('Symbol') !== -1 ? '_Symbol' : '';\n var seletionElem = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + selectionId);\n if (className !== '' && !isNullOrUndefined(className) && !isNullOrUndefined(seletionElem) &&\n seletionElem.hasAttribute('class') && (className === seletionElem.getAttribute('class'))) {\n symbol.classList.add(className);\n }\n symbol.setAttribute('clip-path', element.getAttribute('clip-path'));\n symbol.setAttribute('transform', element.getAttribute('transform'));\n if (this.chart.enableCanvas) {\n svg.appendChild(symbol);\n }\n else {\n this.chart.svgObject.appendChild(symbol);\n }\n }\n this.doAnimation(series, point, false);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n MarkerExplode.prototype.doAnimation = function (series, point, endAnimate) {\n if (endAnimate === void 0) { endAnimate = false; }\n var duration = this.animationDuration();\n var delay = series.animation.delay;\n var rectElements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = rectElements.length; i < len; i++) {\n this.trackballAnimate(rectElements[i], delay, duration, series, point.index, point.symbolLocations[0], false, endAnimate);\n }\n };\n /**\n * Animation Effect Calculation End\n *\n * @private\n */\n MarkerExplode.prototype.trackballAnimate = function (elements, delays, durations, series, pointIndex, point, isLabel, endAnimate) {\n var centerX = point.x;\n var centerY = point.y;\n var clipX = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.x : 0;\n var clipY = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.y : 0;\n var height = 0;\n //(elements).style.visibility = 'hidden';\n var reducedHeight = endAnimate ? -8 : 1;\n var transform = elements.getAttribute('transform');\n new Animation({}).animate(elements, {\n duration: durations,\n delay: delays,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n elements.setAttribute('transform', 'translate(' + (centerX + clipX)\n + ' ' + (centerY + clipY) + ') scale(1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n elements.style.visibility = '';\n elements.setAttribute('transform', transform);\n if (!isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n if (endAnimate) {\n remove(elements);\n }\n }\n });\n };\n /**\n * @param series\n * @param point\n * @param fadeOut\n * @param series\n * @param point\n * @param fadeOut\n * @param series\n * @param point\n * @param fadeOut\n * @hidden\n */\n MarkerExplode.prototype.removeHighlightedMarker = function (series, point, fadeOut) {\n if (series === void 0) { series = null; }\n if (point === void 0) { point = null; }\n if (fadeOut === void 0) { fadeOut = false; }\n if (!isNullOrUndefined(series) && !isNullOrUndefined(point)) {\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n var trackballElements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = trackballElements.length; i < len; i++) {\n remove(trackballElements[0]);\n }\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n }\n else {\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point_1 = _a[_i];\n var elements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point_1.index);\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point_1.index + '_Symbol');\n for (var i = 0, len = elements.length; i < len; i++) {\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n remove(elements[0]);\n }\n }\n }\n if (fadeOut) {\n this.previousPoints = [];\n }\n };\n return MarkerExplode;\n}(ChartData));\nexport { MarkerExplode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { RectOption, appendChildElement, getElement, appendClipElement } from '../../common/utils/helper';\nimport { findlElement, drawSymbol, markerAnimate, CircleOption } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\nexport var markerShapes = [\"Circle\", \"Triangle\", \"Diamond\", \"Rectangle\", \"Pentagon\", \"InvertedTriangle\", \"VerticalLine\", \"Cross\", \"Plus\", \"HorizontalLine\"];\n/**\n * Marker module used to render the marker for line type series.\n */\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function Marker(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Render the marker for series.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.render = function (series) {\n var _this = this;\n var redraw = series.chart.redraw;\n this.createElement(series, redraw);\n var _loop_1 = function (point) {\n if (point.visible && point.symbolLocations && point.symbolLocations.length) {\n point.symbolLocations.map(function (location, index) {\n if (series.marker.shape !== 'None') {\n _this.renderMarker(series, point, location, index, redraw);\n }\n });\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n };\n Marker.prototype.renderMarker = function (series, point, location, index, redraw) {\n var seriesIndex = series.index === undefined ? series.category : series.index;\n var marker = series.marker;\n series.marker.shape = series.marker.shape ? series.marker.shape : markerShapes[seriesIndex % 10];\n var border = {\n color: marker.border.color,\n width: marker.border.width\n };\n var borderColor = marker.border.color;\n var previousLocation;\n var previousPath;\n var circlePath;\n var shapeOption;\n location.x = location.x + marker.offset.x;\n location.y = location.y - marker.offset.y;\n var isBoxPlot = series.type === 'BoxAndWhisker';\n var fill = marker.fill || ((isBoxPlot || series.marker.isFilled) ? point.interior || series.interior : '#ffffff');\n var markerElement;\n var parentElement = isBoxPlot ?\n findlElement(series.seriesElement.childNodes, 'Series_' + series.index + '_Point_' + point.index)\n : series.symbolElement;\n border.color = borderColor || series.setPointColor(point, series.interior);\n var symbolId = this.elementId + '_Series_' + seriesIndex + '_Point_' + point.index + '_Symbol' +\n (index ? index : '');\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: point.isEmpty ? (series.emptyPointSettings.fill || fill) : fill,\n border: {\n color: series.type === 'BoxAndWhisker' ?\n (!isNullOrUndefined(borderColor) && borderColor !== 'transparent') ? borderColor :\n getSaturationColor(fill, -0.6)\n : border.color,\n width: border.width\n },\n height: marker.height, width: marker.width, shape: marker.shape\n };\n argsData.border = series.setBorderColor(point, { width: argsData.border.width, color: argsData.border.color });\n if (!series.isRectSeries || series.type === 'BoxAndWhisker') {\n this.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n }\n point.color = argsData.fill;\n if (!argsData.cancel) {\n var y = void 0;\n if (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.drawType === 'RangeColumn'\n || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') {\n y = index ? point.low : point.high;\n }\n else if (isBoxPlot) {\n y = point.outliers[index];\n }\n else {\n y = point.y;\n }\n var markerFill = argsData.point.marker.fill || argsData.fill;\n var markerBorder = void 0;\n if (!isNullOrUndefined(argsData.point.marker.border)) {\n markerBorder = {\n color: argsData.point.marker.border.color || argsData.border.color,\n width: argsData.point.marker.border.width || argsData.border.width\n };\n }\n else {\n markerBorder = { color: argsData.border.color, width: argsData.border.width };\n }\n var markerWidth = argsData.point.marker.width || argsData.width;\n var markerHeight = argsData.point.marker.height || argsData.height;\n var markerOpacity = argsData.point.marker.opacity || marker.opacity;\n var markerShape = argsData.point.marker.shape || argsData.shape;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n shapeOption = new PathOption(symbolId, markerFill, markerBorder.width, markerBorder.color, markerOpacity, null);\n if ((parentElement !== undefined && parentElement !== null) || this.chart.enableCanvas) {\n if (redraw && getElement(shapeOption.id)) {\n markerElement = getElement(shapeOption.id);\n circlePath = markerShape === 'Circle' ? 'c' : '';\n previousLocation = {\n x: +markerElement.getAttribute(circlePath + 'x'), y: +markerElement.getAttribute(circlePath + 'y')\n };\n previousPath = markerElement.getAttribute('d');\n }\n markerElement = drawSymbol(location, markerShape, new Size(markerWidth, markerHeight), imageURL, shapeOption, point.x.toString() + ':' + y.toString(), this.chart.renderer, series.clipRect);\n if (markerElement) {\n markerElement.setAttribute('role', 'img');\n markerElement.setAttribute('aria-label', (point.x + ': ' + point.y + ', ' + series.name));\n }\n appendChildElement(this.chart.enableCanvas, parentElement, markerElement, redraw, true, circlePath + 'x', circlePath + 'y', previousLocation, previousPath, false, false, null, series.chart.duration);\n }\n point.marker = {\n border: markerBorder, fill: markerFill, height: markerHeight,\n visible: true, shape: markerShape, width: markerWidth, imageUrl: imageURL\n };\n }\n else {\n location = null;\n point.marker = {\n visible: false\n };\n }\n };\n Marker.prototype.createElement = function (series, redraw) {\n var markerClipRect;\n var marker = series.marker;\n // 8 for extend border value 5 for extend size value\n var explodeValue = marker.border.width + 8 + 5;\n var render = series.chart.svgRenderer;\n var index = series.index === undefined ? series.category : series.index;\n var options;\n var transform = series.chart.chartAreaType === 'Cartesian' ? 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')' : '';\n if (marker.visible) {\n var markerHeight = (marker.height + explodeValue) / 2;\n var markerWidth = (marker.width + explodeValue) / 2;\n if (series.chart.chartAreaType === 'Cartesian') {\n var isZoomed = series.xAxis.zoomFactor < 1 || series.xAxis.zoomPosition > 0;\n options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: isZoomed ? 0 : -markerWidth, y: -markerHeight,\n width: series.clipRect.width + (isZoomed ? 0 : markerWidth * 2),\n height: series.clipRect.height + markerHeight * 2\n });\n markerClipRect = appendClipElement(redraw, options, render);\n }\n else {\n options = new CircleOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, series.clipRect.width / 2 + series.clipRect.x, series.clipRect.height / 2 + series.clipRect.y, series.chart.radius + Math.max(markerHeight, markerWidth));\n markerClipRect = appendClipElement(redraw, options, render, 'drawCircularClipPath');\n }\n options = {\n 'id': this.elementId + 'SymbolGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.elementId + '_ChartMarkerClipRect_' + index + ')'\n };\n series.symbolElement = render.createGroup(options);\n series.symbolElement.appendChild(markerClipRect);\n if (this.chart.enableCanvas) {\n var element = document.getElementById(this.chart.element.id + '_tooltip_svg');\n element.appendChild(series.symbolElement);\n }\n }\n };\n Marker.prototype.getRangeLowPoint = function (region, series) {\n var x = region.x;\n var y = region.y;\n if (series.chart.requireInvertedAxis) {\n y += region.height / 2;\n x += series.yAxis.isAxisInverse ? region.width : 0;\n }\n else {\n y += series.yAxis.isAxisInverse ? 0 : region.height;\n x += region.width / 2;\n }\n return { x: x, y: y };\n };\n /**\n * Animates the marker.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.doMarkerAnimation = function (series) {\n if (!(series.type === 'Scatter' || series.type === 'Bubble' || series.type === 'Candle' || series.type === 'Hilo' ||\n series.type === 'HiloOpenClose' || (series.chart.chartAreaType === 'PolarRadar' && (series.drawType === 'Scatter')))) {\n var markerElements = series.symbolElement.childNodes;\n var delay = series.animation.delay + (series.animation.duration === 0 && animationMode === 'Enable' ? 1000 : series.animation.duration);\n var duration = series.chart.animated ? series.chart.duration : 200;\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') ? 2 : 1;\n for (var i = 0; i < series.points.length; i++) {\n if (series.points[i].symbolLocations) {\n if (!series.points[i].symbolLocations.length || !markerElements[j]) {\n continue;\n }\n markerAnimate(markerElements[j], delay, duration, series, i, series.points[i].symbolLocations[0], false);\n if (incFactor === 2) {\n var lowPoint = this.getRangeLowPoint(series.points[i].regions[0], series);\n markerAnimate(markerElements[j + 1], delay, duration, series, i, lowPoint, false);\n }\n j += incFactor;\n }\n }\n }\n };\n return Marker;\n}(MarkerExplode));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, Complex } from '@syncfusion/ej2-base';\nimport { Connector } from '../../common/model/base';\nimport { SeriesBase } from '../series/chart-series';\nimport { firstToLowerCase } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Defines how to represent the market trend using technical indicators\n */\nvar TechnicalIndicator = /** @class */ (function (_super) {\n __extends(TechnicalIndicator, _super);\n function TechnicalIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n TechnicalIndicator.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.xData = series.xData;\n this.yData = series.yData;\n this.points = series.points;\n }\n var type = firstToLowerCase(this.type);\n if (this.visible) {\n chart[type + 'IndicatorModule'].initDataSource(this, chart);\n }\n chart.visibleSeriesCount += this.targetSeries.length;\n };\n __decorate([\n Property('Sma')\n ], TechnicalIndicator.prototype, \"type\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"period\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"kPeriod\", void 0);\n __decorate([\n Property(3)\n ], TechnicalIndicator.prototype, \"dPeriod\", void 0);\n __decorate([\n Property(80)\n ], TechnicalIndicator.prototype, \"overBought\", void 0);\n __decorate([\n Property(20)\n ], TechnicalIndicator.prototype, \"overSold\", void 0);\n __decorate([\n Property(2)\n ], TechnicalIndicator.prototype, \"standardDeviation\", void 0);\n __decorate([\n Property('Close')\n ], TechnicalIndicator.prototype, \"field\", void 0);\n __decorate([\n Property(12)\n ], TechnicalIndicator.prototype, \"slowPeriod\", void 0);\n __decorate([\n Property(26)\n ], TechnicalIndicator.prototype, \"fastPeriod\", void 0);\n __decorate([\n Property(true)\n ], TechnicalIndicator.prototype, \"showZones\", void 0);\n __decorate([\n Complex({ color: '#ff9933', width: 2 }, Connector)\n ], TechnicalIndicator.prototype, \"macdLine\", void 0);\n __decorate([\n Property('Both')\n ], TechnicalIndicator.prototype, \"macdType\", void 0);\n __decorate([\n Property('#2ecd71')\n ], TechnicalIndicator.prototype, \"macdPositiveColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], TechnicalIndicator.prototype, \"macdNegativeColor\", void 0);\n __decorate([\n Property('rgba(211,211,211,0.25)')\n ], TechnicalIndicator.prototype, \"bandColor\", void 0);\n __decorate([\n Complex({ color: '#ffb735', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"upperLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"lowerLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"periodLine\", void 0);\n __decorate([\n Property('')\n ], TechnicalIndicator.prototype, \"seriesName\", void 0);\n return TechnicalIndicator;\n}(SeriesBase));\nexport { TechnicalIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable jsdoc/valid-types */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable jsdoc/require-param-type */\n/* eslint-disable jsdoc/require-returns-description */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable curly */\n/* eslint-disable @typescript-eslint/tslint/config */\n/* eslint-disable no-case-declarations */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\nimport { Component, Property, NotifyPropertyChanges, Internationalization } from '@syncfusion/ej2-base';\nimport { L10n, setValue, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ChildProperty } from '@syncfusion/ej2-base';\nimport { remove, extend } from '@syncfusion/ej2-base';\nimport { Browser, Touch } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Complex, Collection } from '@syncfusion/ej2-base';\nimport { findClipRect, showTooltip, ImageOption, removeElement, appendChildElement, blazorTemplatesReset, withInBounds } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement, getTextAnchor } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, ChartArea, Indexes, TooltipSettings, titleSettings } from '../common/model/base';\nimport { Row, Column, Axis } from './axis/axis';\nimport { CartesianAxisLayoutPanel } from './axis/cartesian-panel';\nimport { Rect, measureText, TextOption, Size, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { ChartData } from './utils/get-data';\nimport { Series } from './series/chart-series';\nimport { Data } from '../common/model/data';\nimport { Marker, markerShapes } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, chartDoubleClick, pointClick, pointDoubleClick, axisLabelClick, beforeResize } from '../common/model/constants';\nimport { chartMouseDown, chartMouseMove, chartMouseUp, load, pointMove, chartMouseLeave, resized } from '../common/model/constants';\nimport { ChartAnnotationSettings } from './model/chart-base';\nimport { getElement, getTitle } from '../common/utils/helper';\nimport { PrintUtils } from '../common/utils/print';\n/**\n * Configures the RangeColorSetting in the chart.\n */\nvar RangeColorSetting = /** @class */ (function (_super) {\n __extends(RangeColorSetting, _super);\n function RangeColorSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"end\", void 0);\n __decorate([\n Property([])\n ], RangeColorSetting.prototype, \"colors\", void 0);\n __decorate([\n Property('')\n ], RangeColorSetting.prototype, \"label\", void 0);\n return RangeColorSetting;\n}(ChildProperty));\nexport { RangeColorSetting };\n/**\n * Configures the crosshair in the chart.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"verticalLineColor\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"horizontalLineColor\", void 0);\n __decorate([\n Property(1)\n ], CrosshairSettings.prototype, \"opacity\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Configures the zooming behavior for the chart.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"showToolbar\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property('XY')\n ], ZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], ZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePan\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableScrollbar\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\n/**\n * Represents the Chart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Chart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.rotatedDataLabelCollections = [];\n /** @public */\n _this.animated = false;\n /** @private */\n _this.isPointMouseDown = false;\n /** @private */\n _this.isScrolling = false;\n /** @private */\n _this.checkResize = 0;\n /** @private */\n _this.visible = 0;\n /** @private */\n _this.clickCount = 0;\n /** @private */\n _this.maxPointCount = 0;\n /** @private */\n _this.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n /** @private */\n _this.scaleX = 1;\n /** @private */\n _this.scaleY = 1;\n _this.isCrosshair = true;\n _this.chartid = 57723;\n /** @private */\n _this.isLegendClicked = false;\n _this.isZoomed = false;\n _this.previousTargetId = '';\n _this.currentPointIndex = 0;\n _this.currentSeriesIndex = 0;\n _this.currentLegendIndex = 0;\n _this.previousPageX = null;\n _this.previousPageY = null;\n _this.allowPan = false;\n setValue('mergePersistData', _this.mergePersistChartData, _this);\n return _this;\n }\n /**\n * To manage persist chart data\n */\n Chart.prototype.mergePersistChartData = function () {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n *\n * @param elementId\n * Return the proper ID when the special character exist in the ID\n */\n Chart.prototype.isIdHasSpecialCharacter = function (elementId) {\n var regex = /^[A-Za-z ]+$/;\n var numberRegex = /^[0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n var start = 0;\n if (numberRegex.test(elementId[0])) {\n childElementId += ('\\\\3' + elementId[0]);\n start = 1;\n }\n for (var i = start; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1 && !numberRegex.test(elementId[i])) {\n childElementId += ('\\\\' + elementId[i]);\n }\n else {\n childElementId += elementId[i];\n }\n }\n return childElementId;\n }\n else {\n return elementId;\n }\n };\n /**\n * Initialize the event handler.\n */\n Chart.prototype.preRender = function () {\n this.element.id = this.isIdHasSpecialCharacter(this.element.id);\n // It is used for checking blazor framework or not.\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.markerIndex = 0;\n this.unWireEvents();\n this.initPrivateVariable();\n this.setCulture();\n this.wireEvents();\n if (this.stockChart) {\n if (this.stockChart.tooltip.header === null) {\n this.tooltip.header = '${point.x}';\n }\n if (this.stockChart.tooltip.format === null) {\n this.tooltip.format = 'High : ${point.high}
Low :' +\n ' ${point.low}
Open : ${point.open}
Close : ${point.close}';\n }\n }\n this.element.setAttribute('dir', this.enableRtl ? 'rtl' : '');\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\n this.dragY = null;\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.refreshAxis();\n this.refreshDefinition(this.rows);\n this.refreshDefinition(this.columns);\n if (this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.description || this.title + '. Syncfusion interactive chart.');\n if (!(this.element.classList.contains(\"e-chart-focused\"))) {\n this.element.setAttribute('class', this.element.getAttribute('class') + ' e-chart-focused');\n }\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\n var elementid = 'chart_' + this.chartid + '_' + collection;\n while (document.getElementById(elementid)) {\n collection++;\n elementid = 'chart_' + this.chartid + '_' + collection;\n }\n this.element.id = 'chart_' + this.chartid + '_' + collection;\n }\n //seperate ID to differentiate chart and stock chart\n this.svgId = this.stockChart ? this.stockChart.element.id + '_stockChart_chart' :\n this.element.id + (this.enableCanvas ? '_canvas' : '_svg');\n };\n /**\n * To Initialize the control rendering.\n */\n Chart.prototype.render = function () {\n var _this = this;\n this.svgRenderer = new SvgRenderer(this.element.id);\n var loadEventData = {\n chart: this.isBlazor ? {} : this, theme: this.theme, name: load, cancel: false\n };\n if (!this.stockChart) {\n /**\n * Load event for the chart will be triggered only chart componet, if this is stock chart, load event did not triggered.\n */\n this.trigger(load, loadEventData, function () {\n if (!loadEventData.cancel) {\n _this.cartesianChartRendering(loadEventData);\n }\n });\n }\n else {\n // The fix is specific for nextjs app, as window is set as not defined for server side application like nextjs.\n this.isRtlEnabled = (window.getComputedStyle(document.querySelector('body')).direction === 'rtl');\n this.cartesianChartRendering(loadEventData);\n }\n this.applyZoomkit();\n };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.setTheme();\n this.createChartSvg();\n this.markerRender = new Marker(this);\n this.calculateAreaType();\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.calculateVisibleAxis();\n this.processData();\n this.renderComplete();\n this.mouseMoveEvent();\n this.allowServerDataBinding = true;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key key\n * @returns {string} localized label\n */\n Chart.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Animate the series bounds.\n *\n * @private\n */\n Chart.prototype.animate = function (duration) {\n this.redraw = true;\n this.animated = true; //used to set duration as 1000 for animation at default 300\n this.duration = duration ? duration : 1000;\n if (this.tooltipModule) {\n this.tooltipModule.removeHighlightedMarker(this.tooltipModule.previousPoints, true);\n }\n else if (this.markerRender.previousPoints) {\n for (var previousPoint = 0; previousPoint < this.markerRender.previousPoints.length; previousPoint++)\n this.markerRender.removeHighlightedMarker(this.markerRender.previousPoints[previousPoint].series, this.markerRender.previousPoints[previousPoint].point);\n }\n };\n /**\n * Refresh the chart bounds.\n *\n * @private\n */\n Chart.prototype.refreshBound = function () {\n this.rotatedDataLabelCollections = [];\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.visibleSeries, this);\n }\n /**\n * I264230, EJ2-36761\n * Issue: Tooltip doesnot appears after zooming and hovering on same point\n * Root cause: While performing zoom, previous points in tooltip restore.\n * Fix: previous points set to empty array\n */\n if (this.tooltip.enable && this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.calculateStackValues();\n this.calculateBounds();\n //this prevents the initial rendering of stock chart\n if (this.stockChart && !this.stockChart.rangeFound) {\n if (this.stockChart.enablePeriodSelector || this.stockChart.enableSelector) {\n return null;\n }\n }\n this.renderElements();\n removeElement('chartmeasuretext');\n this.removeSelection();\n if (this.markerRender) {\n this.markerRender.mergeXvalues(this.visibleSeries);\n }\n };\n /**\n * To calcualte the stack values\n */\n Chart.prototype.calculateStackValues = function () {\n var series;\n var isCalculateStacking = false;\n for (var i = 0, len = this.visibleSeries.length; i < len; i++) {\n series = this.visibleSeries[i];\n series.position = series.rectCount = undefined;\n if (((series.type.indexOf('Stacking') !== -1) || (series.drawType.indexOf('Stacking') !== -1\n && this.chartAreaType === 'PolarRadar')) && !isCalculateStacking) {\n series.calculateStackedValue(series.type.indexOf('100') > -1, this);\n isCalculateStacking = true;\n }\n }\n };\n Chart.prototype.removeSelection = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n point.isSelect = false;\n }\n }\n }\n if (getElement(this.element.id + '_ej2_drag_multi_group')) {\n if (this.selectionMode.indexOf('Drag') > -1) {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_multi_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n else if (getElement(this.element.id + '_ej2_drag_group')) {\n if (this.selectionMode !== 'Lasso') {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n };\n Chart.prototype.renderElements = function () {\n this.renderBorder();\n this.renderTitle();\n this.renderAreaBorder();\n this.renderSeriesElements(this.renderAxes());\n this.renderLegend();\n this.applyZoomkit();\n this.performSelection();\n this.setSecondaryElementPosition();\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', value.marker.dataLabel);\n }\n this.renderAnnotation();\n };\n /**\n * To render the legend\n *\n * @private\n */\n Chart.prototype.renderAxes = function () {\n this.yAxisElements = this.renderer.createGroup({ id: this.element.id + 'yAxisCollection' });\n var axisElement;\n if (this.rows.length > 0 && this.columns.length > 0) {\n axisElement = this.chartAxisLayoutPanel.renderAxes();\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Behind', this.axisCollections);\n }\n return axisElement;\n };\n /**\n * To render the legend\n */\n Chart.prototype.renderLegend = function () {\n if (this.legendModule && this.legendModule.legendCollections.length && this.legendSettings.visible) {\n this.legendModule.calTotalPage = true;\n var borderWidth = this.legendSettings.border.width;\n var bounds = this.legendModule.legendBounds;\n var rect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (this.enableCanvas) {\n rect = new Rect(rect.x - borderWidth / 2, rect.y - borderWidth / 2, rect.width + borderWidth, rect.height + borderWidth);\n this.renderer.canvasClip(rect);\n }\n this.legendModule.renderLegend(this, this.legendSettings, bounds);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n if (!this.redraw) {\n if (!this.stockChart) {\n this.element.appendChild(this.svgObject);\n }\n else {\n if (!getElement(this.stockChart.chartObject.id)) {\n this.stockChart.mainObject.appendChild(this.svgObject);\n }\n }\n }\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n */\n Chart.prototype.setSecondaryElementPosition = function () {\n var element = getElement(this.element.id + '_Secondary_Element');\n if (!element) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n element.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n element.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n Chart.prototype.initializeModuleElements = function () {\n this.dataLabelCollections = [];\n var elementId = this.element.id;\n if (this.series.length) {\n this.seriesElements = this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' });\n }\n if (this.indicators.length) {\n this.indicatorElements = this.renderer.createGroup({ id: elementId + 'IndicatorCollection' });\n }\n if (this.hasTrendlines()) {\n this.trendLineElements = this.renderer.createGroup({ id: elementId + 'TrendLineCollection' });\n }\n this.dataLabelElements = this.renderer.createGroup({ id: elementId + 'DataLabelCollection' });\n };\n Chart.prototype.hasTrendlines = function () {\n var isTrendline;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n isTrendline = series.trendlines.length ? true : false;\n if (isTrendline) {\n break;\n }\n }\n return isTrendline;\n };\n Chart.prototype.renderSeriesElements = function (axisElement) {\n // Initialize the series elements values\n this.initializeModuleElements();\n var elementId = this.element.id;\n if (this.element.tagName !== 'g') {\n var tooltipDiv = redrawElement(this.redraw, elementId + '_Secondary_Element') ||\n this.createElement('div');\n tooltipDiv.id = elementId + '_Secondary_Element';\n tooltipDiv.style.cssText = 'position: relative';\n appendChildElement(false, this.element, tooltipDiv, this.redraw);\n }\n // For canvas\n if (this.enableCanvas) {\n var tooltipdiv = document.getElementById(elementId + '_Secondary_Element');\n tooltipdiv = !tooltipdiv ? this.createElement('div', { id: elementId + '_Secondary_Element',\n attrs: { 'style': 'position: relative; left:0px; top:0px' } }) : tooltipdiv;\n var svg = this.svgRenderer.createSvg({\n id: elementId + '_tooltip_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n tooltipdiv.appendChild(svg);\n }\n // For userInteraction\n if (this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: elementId + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.initializeIndicator();\n this.initializeTrendLine();\n this.renderSeries();\n // Trendline is append to DOM after the series\n if (this.trendLineElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.trendLineElements, this.redraw);\n }\n this.appendElementsAfterSeries(axisElement);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderSeries = function () {\n var visibility;\n if (this.enableCanvas) {\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.category === 'TrendLine') {\n visibility = this.series[item.sourceIndex].trendlines[item.index].visible;\n }\n else {\n visibility = item.visible;\n }\n if (visibility) {\n this.visible++;\n findClipRect(item, this.enableCanvas);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries(item);\n }\n item.renderSeries(this);\n }\n }\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n this.visible = 0;\n var options = {\n 'id': this.element.id + '_ChartAreaClipRect_',\n 'x': this.chartAxisLayoutPanel.seriesClipRect.x,\n 'y': this.chartAxisLayoutPanel.seriesClipRect.y,\n 'width': this.chartAxisLayoutPanel.seriesClipRect.width,\n 'height': this.chartAxisLayoutPanel.seriesClipRect.height,\n 'fill': 'transparent',\n 'stroke-width': 1,\n 'stroke': 'Gray'\n };\n if (!this.seriesElements) {\n return;\n }\n var clipRectElement;\n if (this.chartAreaType === 'PolarRadar') {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer, 'drawCircularClipPath');\n }\n else {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer);\n }\n if (!this.enableCanvas) {\n this.seriesElements.appendChild(clipRectElement);\n }\n var seriesSvg = document.getElementById(this.element.id + '_series_svg');\n if (seriesSvg) {\n appendChildElement(false, seriesSvg, this.seriesElements, this.redraw);\n }\n else {\n appendChildElement(this.enableCanvas, this.svgObject, this.seriesElements, this.redraw);\n }\n };\n Chart.prototype.renderCanvasSeries = function (item) {\n var svgElement;\n // eslint-disable-next-line prefer-const\n svgElement = (this.enableCanvas) ?\n svgElement : this.svgObject;\n var canvas = (this.enableCanvas) ?\n false : this.enableCanvas;\n };\n Chart.prototype.initializeIndicator = function () {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (this[firstToLowerCase(indicator.type) + 'IndicatorModule']) {\n this[firstToLowerCase(indicator.type) + 'IndicatorModule'].createIndicatorElements(this, indicator, indicator.index);\n }\n }\n if (this.indicatorElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.indicatorElements, this.redraw);\n }\n };\n Chart.prototype.initializeTrendLine = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.trendlines.length) {\n this.trendLineModule.getTrendLineElements(series, this);\n }\n }\n };\n Chart.prototype.appendElementsAfterSeries = function (axisElement) {\n if (this.chartAreaType === 'PolarRadar') {\n appendChildElement(this.enableCanvas, this.svgObject, this.yAxisElements, this.redraw);\n }\n appendChildElement(this.enableCanvas, this.svgObject, axisElement, this.redraw);\n if ((this.zoomModule && this.zoomSettings.enableScrollbar && this.scrollElement.childElementCount) ||\n (this.scrollElement && this.scrollElement.childElementCount)) {\n appendChildElement(false, getElement(this.element.id + '_Secondary_Element'), this.scrollElement, this.redraw);\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Over', this.axisCollections);\n }\n if (!this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: this.element.id + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.stockChart) {\n this.stockChart.calculateStockEvents();\n }\n };\n Chart.prototype.applyZoomkit = function () {\n /**\n * Issue: Zoomkit not visible after performing refresh()\n * Fix: this method called without checking `zoomModule.isZoomed`\n */\n if (this.chartAreaType === 'PolarRadar') {\n return;\n }\n if (!this.redraw && this.zoomModule && (!this.zoomSettings.enablePan || this.zoomModule.performedUI || this.zoomSettings.showToolbar)) {\n this.zoomModule.applyZoomToolkit(this, this.axisCollections);\n }\n };\n /**\n * Render annotation perform here\n *\n * @private\n */\n Chart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n //for stock chart, stock chart's id is added to render the annotations\n this.annotationModule.renderAnnotations(getElement((this.stockChart ? this.stockChart.element.id : this.element.id) + '_Secondary_Element'));\n }\n };\n Chart.prototype.performSelection = function () {\n var selectedDataIndexes = [];\n if (this.selectionModule) {\n selectedDataIndexes = extend([], this.selectionModule.selectedDataIndexes, null, true);\n this.selectionModule.invokeSelection(this);\n }\n if (this.highlightModule) {\n this.highlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.selectionModule.selectedDataIndexes = selectedDataIndexes;\n this.selectionModule.redrawSelection(this, this.selectionMode);\n }\n };\n Chart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.visibleSeriesCount = 0;\n var check = true;\n var prevPointCount = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible && !this.legendSettings.visible) {\n this.visibleSeriesCount++;\n continue;\n }\n if (series.category !== 'Indicator' && series.category !== 'TrendLine') {\n this.initializeDataModule(series);\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n if (indicator.dataSource) {\n var techIndicator = indicator;\n this.initializeDataModule(techIndicator);\n check = false;\n }\n }\n if (render && (!this.visibleSeries.length || this.visibleSeriesCount === this.visibleSeries.length && check)) {\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (!this.stockChart && this.visibleSeries.length > 0) {\n for (var _d = 0, _e = this.visibleSeries; _d < _e.length; _d++) {\n var series = _e[_d];\n if (!isNullOrUndefined(series.points)) {\n this.maxPointCount = Math.max(prevPointCount, series.points.length);\n prevPointCount = series.points.length;\n }\n }\n }\n };\n Chart.prototype.initializeDataModule = function (series) {\n series.xData = [];\n series.yData = [];\n var dataSource;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n dataSource = Object.keys(series.dataSource).length ? series.dataSource : this.dataSource;\n }\n else {\n dataSource = series.dataSource || this.dataSource;\n }\n series.dataModule = new Data(dataSource, series.query);\n series.points = [];\n series.refreshDataManager(this);\n };\n Chart.prototype.calculateBounds = function () {\n var margin = this.margin;\n // Title Height;\n var titleHeight = 0;\n var subTitleHeight = 0;\n var titleWidth = 0;\n var padding = this.titleStyle.position === 'Top' || (this.titleStyle.position === 'Bottom' && !this.legendSettings.visible) ? 15 : 5;\n var left = margin.left + this.border.width;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n var elementSpacing = 0;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width, this.enableRtl, this.themeStyle.chartTitleFont);\n titleHeight = (measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont).height * this.titleCollection.length) + padding;\n if (this.subTitle) {\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, width, this.enableRtl, this.themeStyle.chartSubTitleFont);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont).height * this.subTitleCollection.length) +\n padding;\n }\n }\n else if (this.legendSettings.position !== 'Top' && this.border.width) {\n elementSpacing = 10;\n }\n var top = margin.top + elementSpacing + this.border.width + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n var marginTotal = subTitleHeight + titleHeight + this.titleStyle.border.width + this.subTitleStyle.border.width;\n switch (this.titleStyle.position) {\n case 'Top':\n top += marginTotal;\n height -= marginTotal;\n break;\n case 'Bottom':\n height -= marginTotal;\n break;\n case 'Left':\n left += marginTotal;\n width -= marginTotal;\n break;\n case 'Right':\n left -= (this.titleStyle.border.width + this.subTitleStyle.border.width);\n width -= marginTotal;\n break;\n }\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n top += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n left += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n this.initialClipRect = new Rect(left, top, width, height);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n }\n this.chartAxisLayoutPanel.measureAxis(this.initialClipRect);\n };\n /**\n * Handles the print method for chart control.\n */\n Chart.prototype.print = function (id) {\n var exportChart = new PrintUtils(this);\n var width = this.width;\n if (this.getModuleName() == 'chart' && parseInt(this.width) >= 80 && this.width.indexOf('%') > -1) {\n this.width = '80%';\n this.dataBind();\n }\n exportChart.print(id);\n if (this.getModuleName() == 'chart' && parseInt(this.width) >= 80 && this.width.indexOf('%') > -1) {\n this.width = width;\n this.dataBind();\n }\n };\n /**\n * Defines the trendline initialization\n */\n Chart.prototype.initTrendLines = function () {\n this.isProtectedOnChange = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var trendIndex = 0;\n for (var _b = 0, _c = series.trendlines; _b < _c.length; _b++) {\n var trendline = _c[_b];\n var trendLine = trendline;\n if (this.trendLineModule) {\n trendLine.index = trendIndex;\n trendLine.sourceIndex = series.index;\n this.trendLineModule.initSeriesCollection(trendLine, this);\n if (trendLine.targetSeries) {\n trendLine.targetSeries.xAxisName = series.xAxisName;\n trendLine.targetSeries.yAxisName = series.yAxisName;\n this.visibleSeries.push(trendLine.targetSeries);\n }\n }\n trendIndex++;\n }\n }\n this.isProtectedOnChange = false;\n };\n Chart.prototype.calculateAreaType = function () {\n var series = this.series[0];\n this.chartArea.border.width = this.stockChart ? 0 : this.chartArea.border.width;\n if (series) {\n this.requireInvertedAxis = ((series.type.indexOf('Bar') !== -1) && !this.isTransposed) ||\n ((series.type.indexOf('Bar') === -1) && this.isTransposed && this.chartAreaType !== 'PolarRadar');\n }\n this.chartAxisLayoutPanel = this.chartAreaType === 'PolarRadar' ? (this.polarSeriesModule || this.radarSeriesModule)\n : new CartesianAxisLayoutPanel(this);\n };\n /**\n * Calculate the visible axis\n *\n * @private\n */\n Chart.prototype.calculateVisibleAxis = function () {\n var axis;\n var axes = [this.primaryXAxis, this.primaryYAxis];\n axes = this.chartAreaType === 'Cartesian' ? axes.concat(this.axes) : axes;\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n axes = axes.concat(this.paretoSeriesModule.paretoAxes);\n }\n this.axisCollections = [];\n if (this.zoomModule) {\n this.zoomModule.isPanning = this.zoomModule.isAxisZoomed(axes) && this.zoomSettings.enablePan;\n this.svgObject.setAttribute('cursor', this.zoomModule.isPanning ? 'pointer' : 'auto');\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n if (this.scrollSettingEnabled) {\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n for (var i = 0, len = axes.length; i < len; i++) {\n axis = axes[i];\n axis.series = [];\n axis.labels = [];\n axis.indexLabels = {};\n axis.orientation = (i == 0) ? (this.requireInvertedAxis ? 'Vertical' : 'Horizontal') :\n (i == 1) ? (this.requireInvertedAxis ? 'Horizontal' : 'Vertical') : axis.orientation;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\n if (series.category == 'Pareto' && series.type == 'Line' && series.yAxis) {\n series.yAxis.internalVisibility = series.paretoOptions.showAxis;\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n this.initAxis(indicator, axis, false);\n }\n if (this.scrollBarModule && !axis.zoomingScrollBar) {\n this.scrollBarModule.injectTo(axis, this);\n }\n if (axis.orientation != null) {\n this.axisCollections.push(axis);\n }\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.chartAxisLayoutPanel.measure();\n }\n };\n Chart.prototype.initAxis = function (series, axis, isSeries) {\n if (series.xAxisName === axis.name || (series.xAxisName == null && axis.name === 'primaryXAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Vertical' : 'Horizontal';\n series.xAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n else if (series.yAxisName === axis.name || (series.yAxisName == null && axis.name === 'primaryYAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Horizontal' : 'Vertical';\n series.yAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n };\n Chart.prototype.initTechnicalIndicators = function () {\n var i = 0;\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n var techIndicator = indicator;\n var type = firstToLowerCase(techIndicator.type);\n if (this[type + 'IndicatorModule']) {\n techIndicator.index = i;\n this[type + 'IndicatorModule'].initSeriesCollection(techIndicator, this);\n for (var _b = 0, _c = techIndicator.targetSeries; _b < _c.length; _b++) {\n var targetSeries = _c[_b];\n if (indicator.seriesName || indicator.dataSource) {\n this.visibleSeries.push(targetSeries);\n }\n }\n }\n i++;\n }\n };\n /** @private */\n Chart.prototype.refreshTechnicalIndicator = function (series) {\n if (this.indicators.length) {\n var targetIndicator = null;\n if (series instanceof Series && series.category !== 'Indicator') {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (indicator.seriesName === series.name && !indicator.dataSource) {\n targetIndicator = indicator;\n targetIndicator.setDataSource(series, this);\n }\n }\n }\n else if (series instanceof TechnicalIndicator) {\n targetIndicator = series;\n targetIndicator.setDataSource(series instanceof Series ? series : null, this);\n }\n }\n };\n Chart.prototype.calculateVisibleSeries = function () {\n var series;\n this.visibleSeries = [];\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.theme);\n var count = colors.length;\n var seriesCollection = this.series.sort(function (a, b) { return a.zOrder - b.zOrder; });\n for (var i = 0, len = seriesCollection.length; i < len; i++) {\n series = seriesCollection[i];\n // for y axis label issue during chart navigation\n series.category = seriesCollection[0].type === 'Pareto' ? 'Pareto' : 'Series';\n series.index = i;\n series.interior = series.fill || colors[i % count];\n if (!series.marker.shape && (series.marker.visible || series.type === 'Scatter' || series.drawType === 'Scatter')) {\n series.marker.shape = markerShapes[this.markerIndex % 10];\n this.markerIndex++;\n }\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n switch (series.type) {\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n if (seriesCollection[0].type.indexOf('Bar') === -1) {\n continue;\n }\n break;\n case 'Polar':\n case 'Radar':\n if (this.chartAreaType !== 'PolarRadar') {\n continue;\n }\n if (this.chartAreaType === 'PolarRadar' && ((series.xAxisName !== null && (this.primaryXAxis.name !== series.xAxisName)) ||\n (series.yAxisName !== null && (this.primaryYAxis.name !== series.yAxisName)))) {\n continue;\n }\n break;\n case 'Pareto':\n this.visibleSeries.push(series);\n this.paretoSeriesModule.initSeries(series, this);\n continue;\n default:\n if (this.chartAreaType === 'PolarRadar' || seriesCollection[0].type.indexOf('Bar') > -1) {\n continue;\n }\n break;\n }\n this.visibleSeries.push(series);\n seriesCollection[i] = series;\n }\n };\n Chart.prototype.isSecondaryAxis = function (axis) {\n return (this.axes.indexOf(axis) > -1);\n };\n Chart.prototype.renderTitle = function () {\n var rect;\n var margin = this.margin;\n var elementSpacing = 5;\n if (this.title) {\n var getAnchor = getTextAnchor(this.titleStyle.textAlignment, this.enableRtl);\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var borderWidth = this.titleStyle.border.width;\n var positionY = this.margin.top + ((elementSize.height) * 3 / 4);\n var positionX = titlePositionX(rect, this.titleStyle || this.themeStyle.chartTitleFont) + borderWidth;\n var rotation = void 0;\n var alignment = this.titleStyle.textAlignment;\n var subtitleSize = measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n switch (this.titleStyle.position) {\n case 'Top':\n positionY += borderWidth * 0.5;\n positionX += getAnchor === 'start' ? borderWidth * 0.5 + this.border.width :\n getAnchor === 'end' ? ((-borderWidth * 2) - this.border.width) : 0;\n break;\n case 'Bottom':\n positionX += getAnchor === 'start' ? (borderWidth * 0.5) + this.border.width :\n getAnchor === 'end' ? (-borderWidth * 2) - this.border.width : 0;\n positionY = this.availableSize.height - this.margin.bottom - subtitleSize.height - (elementSize.height / 2) -\n (borderWidth * 0.5) - (this.subTitleStyle.border.width * 0.5);\n break;\n case 'Left':\n positionX = this.margin.left + ((elementSize.height) * 3 / 4) + (borderWidth * 0.5);\n positionY = alignment == 'Near' ? margin.bottom + (borderWidth * 0.5) + this.border.width :\n alignment == 'Far' ? this.availableSize.height - margin.bottom - (borderWidth * 0.5) - this.border.width : this.availableSize.height / 2;\n getAnchor = alignment == 'Near' ? 'end' : alignment == 'Far' ? 'start' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + -90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Right':\n positionX = this.availableSize.width - this.margin.right - ((elementSize.height) * 3 / 4) - (borderWidth * 0.5);\n positionY = alignment == 'Near' ? margin.bottom + (borderWidth * 0.5) + this.border.width :\n alignment == 'Far' ? this.availableSize.height - margin.bottom - (borderWidth * 0.5) - this.border.width : this.availableSize.height / 2;\n getAnchor = alignment == 'Near' ? 'start' : alignment == 'Far' ? 'end' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + 90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Custom':\n positionX = this.titleStyle.x;\n positionY = this.titleStyle.y;\n getAnchor = 'middle';\n break;\n }\n var borderOptions = {\n 'id': this.element.id + '_ChartTitleBorder',\n 'x': positionX - (getAnchor === 'middle' ? (elementSize.width / 2) + elementSpacing : getAnchor === 'end' ? elementSize.width + elementSpacing : elementSpacing),\n 'y': positionY - elementSize.height + (elementSize.height / 4),\n 'rx': this.titleStyle.border.cornerRadius,\n 'ry': this.titleStyle.border.cornerRadius,\n 'width': elementSize.width + (elementSpacing * 2),\n 'height': elementSize.height * this.titleCollection.length,\n 'fill': this.titleStyle.background,\n 'stroke-width': borderWidth,\n 'stroke': this.titleStyle.border.color,\n 'transform': rotation ? rotation : '',\n 'd': ''\n };\n var htmlObject = redrawElement(this.redraw, this.element.id + '_ChartTitleBorder', borderOptions, this.renderer)\n || this.renderer.drawRectangle(borderOptions);\n appendChildElement(this.enableCanvas, this.svgObject, htmlObject, this.redraw);\n var options = new TextOption(this.element.id + '_ChartTitle', positionX, positionY, getAnchor, this.titleCollection, rotation, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartTitle', options, this.renderer) ||\n textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartTitleFont);\n if (element) {\n element.setAttribute('tabindex', '0');\n element.setAttribute('class', 'e-chart-focused');\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n }\n };\n Chart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartSubTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitleCollection.reduce(function (a, b) { return (a.length > b.length ? a : b); }), this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n var getAnchor = getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n if (this.titleStyle.position === 'Left') {\n rect.x = alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment == 'Far' ? this.margin.left + ((subTitleElementSize.height) * 3 / 4) : (options.x - maxWidth);\n }\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n var positionY = options.y * options.text.length + subTitleElementSize.height + (padding / 2) + this.titleStyle.border.width + (this.subTitleStyle.border.width * 0.5);\n if (this.titleStyle.position === 'Bottom') {\n positionY = options.y * options.text.length + (padding / 2) + (elementSize.height / 2) + (subTitleElementSize.height / 2);\n }\n var borderOptions = {\n 'id': this.element.id + '_ChartSubTitleBorder',\n 'x': titlePositionX(rect, this.subTitleStyle) - (getAnchor === 'middle' ? (subTitleElementSize.width / 2) + padding / 2 : getAnchor === 'end' ? subTitleElementSize.width + padding / 2 : padding / 2),\n 'y': positionY - subTitleElementSize.height + (subTitleElementSize.height / 4),\n 'rx': this.subTitleStyle.border.cornerRadius,\n 'ry': this.subTitleStyle.border.cornerRadius,\n 'width': subTitleElementSize.width + padding,\n 'height': subTitleElementSize.height * this.subTitleCollection.length,\n 'fill': this.subTitleStyle.background,\n 'stroke-width': this.subTitleStyle.border.width,\n 'stroke': this.subTitleStyle.border.color,\n 'transform': options.transform,\n 'd': ''\n };\n var htmlObject = redrawElement(this.redraw, this.element.id + '_ChartSubTitleBorder', borderOptions, this.renderer)\n || this.renderer.drawRectangle(borderOptions);\n appendChildElement(this.enableCanvas, this.svgObject, htmlObject, this.redraw);\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), positionY, getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl), this.subTitleCollection, options.transform, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartSubTitle', subTitleOptions, this.renderer) ||\n textElement(this.renderer, subTitleOptions, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartSubTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartSubTitleFont);\n };\n Chart.prototype.renderBorder = function () {\n var x = 0;\n var y = 0;\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n y += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n x += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5 + x, width * 0.5 + y, this.availableSize.width - width, this.availableSize.height - width));\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBorder', rect, this.renderer)\n || this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n // to draw back ground image for chart\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - width, this.availableSize.width - width, backGroundImage, 0, 0, this.element.id + '_ChartBackground', 'visible', 'none');\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBackground', image, this.renderer)\n || this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderAreaBorder = function () {\n if (this.chartAreaType === 'PolarRadar') {\n return null;\n }\n else {\n var element = getElement(this.element.id + '_ChartAreaBorder');\n var previousRect = element ?\n new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n var rect = new RectOption(this.element.id + '_ChartAreaBorder', this.chartArea.background, { width: this.chartArea.border.width, color: this.chartArea.border.color || this.themeStyle.areaBorder }, this.chartArea.opacity, this.chartAxisLayoutPanel.seriesClipRect);\n this.htmlObject = this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n this.htmlObject = null;\n }\n // to draw back ground image for chart area\n var backGroundImage = this.chartArea.backgroundImage;\n if (backGroundImage) {\n var width = this.chartArea.border.width;\n var image = new ImageOption(this.initialClipRect.height - width, this.initialClipRect.width - width, backGroundImage, this.initialClipRect.x, this.initialClipRect.y, this.element.id + '_ChartAreaBackground', 'visible', 'none');\n this.htmlObject = this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true);\n }\n };\n /**\n * To add series for the chart\n *\n * @param {SeriesModel[]} seriesCollection - Defines the series collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series = new Series(this, 'series', series);\n this.series.push(series);\n }\n this.refresh();\n };\n /**\n * To Remove series for the chart\n *\n * @param {number} index - Defines the series index to be remove in chart series\n * @returns {void}\n */\n Chart.prototype.removeSeries = function (index) {\n this.redraw = false; //fix for remove svg not working when use animatemethod.\n if (this.visibleSeries[index]) {\n this.visibleSeries[index].xAxis.orientation = null;\n this.visibleSeries[index].yAxis.orientation = null;\n }\n for (var i = 0; i < this.axes.length; i++) {\n if (this.axes[i].orientation === null) {\n this.axes.splice(i, 1);\n }\n }\n this.series.splice(index, 1);\n this.refresh();\n };\n /**\n * To Clear all series for the chart\n *\n * @returns {void}.\n */\n Chart.prototype.clearSeries = function () {\n this.series = [];\n this.refresh();\n };\n /**\n * To add secondary axis for the chart\n *\n * @param {AxisModel[]} axisCollection - Defines the axis collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addAxes = function (axisCollection) {\n for (var _i = 0, axisCollection_1 = axisCollection; _i < axisCollection_1.length; _i++) {\n var axis = axisCollection_1[_i];\n axis = new Axis(this, 'axes', axis);\n if (this.isBlazor) {\n axis.interval = isNaN(axis.interval) ? null : axis.interval;\n axis.desiredIntervals = isNaN(axis.desiredIntervals) ? null : axis.desiredIntervals;\n }\n this.axes.push(axis);\n }\n this.refresh();\n };\n /**\n * To remove secondary axis for the chart\n *\n * @param {number} index - Defines the axis collection to be removed in chart.\n * @returns {void}\n */\n Chart.prototype.removeAxis = function (index) {\n this.redraw = false;\n this.axes.splice(index, 1);\n this.refresh();\n };\n /**\n * To destroy the widget\n *\n * @function destroy\n * @returns {void}.\n * @member of Chart\n */\n Chart.prototype.destroy = function () {\n if (this.scrollBarModule) {\n this.scrollBarModule.destroy();\n }\n if (this.markerRender) {\n this.markerRender.removeEventListener();\n this.markerRender = null;\n }\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.visibleSeries = [];\n this.axisCollections = [];\n this.rotatedDataLabelCollections = [];\n this.seriesElements = null;\n this.chartAxisLayoutPanel = null;\n this.dataLabelCollections = null;\n this.dataLabelElements = null;\n this.yAxisElements = null;\n var element = document.getElementById(this.element.id + 'Keyboard_chart_focus');\n if (element) {\n element.remove();\n }\n var highlightElement = document.getElementById(this.element.id + '_ej2_chart_highlight');\n if (highlightElement) {\n highlightElement.remove();\n }\n removeElement('chartmeasuretext');\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n if (!this.enableCanvas) {\n this.removeSvg();\n this.svgObject = null;\n }\n }\n };\n /**\n * Get component name\n */\n Chart.prototype.getModuleName = function () {\n return 'chart';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Chart.prototype.getPersistData = function () {\n var keyEntity = ['loaded', 'animationComplete', 'primaryXAxis', 'primaryYAxis'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Method to create SVG element.\n */\n Chart.prototype.createChartSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * Method to bind events for chart\n */\n Chart.prototype.unWireEvents = function () {\n var startEvent = Browser.touchStartEvent;\n var moveEvent = Browser.touchMoveEvent;\n var stopEvent = Browser.touchEndEvent;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, startEvent, this.chartOnMouseDown);\n EventHandler.remove(this.element, moveEvent, this.mouseMove);\n EventHandler.remove(this.element, stopEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.chartOnMouseClick);\n EventHandler.remove(this.element, 'dblclick', this.chartOnDoubleClick);\n EventHandler.remove(this.element, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\n EventHandler.remove(this.element, 'keydown', this.chartKeyDown);\n EventHandler.remove(document.body, 'keydown', this.documentKeyHandler);\n EventHandler.remove(this.element, 'keyup', this.chartKeyUp);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n /**\n * To fix memory issue\n */\n if (this.touchObject) {\n this.touchObject.destroy();\n this.touchObject = null;\n }\n };\n Chart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /*! Find the Events type */\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.chartOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.chartOnMouseClick, this);\n EventHandler.add(this.element, 'dblclick', this.chartOnDoubleClick, this);\n EventHandler.add(this.element, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, this);\n EventHandler.add(this.element, 'keydown', this.chartKeyDown, this);\n EventHandler.add(document.body, 'keydown', this.documentKeyHandler, this);\n EventHandler.add(this.element, 'keyup', this.chartKeyUp, this);\n this.resizeBound = this.chartResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n this.longPressBound = this.longPress.bind(this);\n this.touchObject = new Touch(this.element, { tapHold: this.longPressBound, tapHoldThreshold: 500 });\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n Chart.prototype.chartRightClick = function (event) {\n if (this.crosshair.enable && this.crosshairModule &&\n (event.buttons === 2 || event.which === 0 || event.pointerType === 'touch')) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n Chart.prototype.setStyle = function (element) {\n var zooming = this.zoomSettings;\n var disableScroll = zooming.enableSelectionZooming || zooming.enablePinchZooming ||\n this.selectionMode !== 'None' || this.crosshair.enable || this.highlightMode !== 'None';\n element.style.touchAction = disableScroll ? 'none' : 'element';\n element.style.msTouchAction = disableScroll ? 'none' : 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n // To fix angular and react tooltip div scrollbar issue\n element.style.overflow = 'hidden';\n element.style.height = (element.style.height || (this.height && this.height.indexOf('%') === -1)) ? element.style.height : 'inherit';\n };\n /**\n * Finds the orientation.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.isOrientation = function () {\n return ('orientation' in window && 'onorientationchange' in window);\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.longPress = function (e) {\n this.mouseX = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientX) : 0;\n this.mouseY = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientY) : 0;\n this.startMove = true;\n this.allowPan = this.stockChart ? false : this.allowPan;\n this.setMouseXY(this.mouseX, this.mouseY);\n this.notify('tapHold', e);\n return false;\n };\n /**\n * To find mouse x, y for aligned chart element svg position\n */\n Chart.prototype.setMouseXY = function (pageX, pageY) {\n if (getElement(this.svgId)) {\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n this.mouseY = ((pageY - rect.top) - Math.max(svgRect.top - rect.top, 0) / this.scaleX);\n this.mouseX = ((pageX - rect.left) - Math.max(svgRect.left - rect.left, 0) / this.scaleY);\n if (this.stockChart) {\n this.mouseX += this.stockChart.legendSettings.position === 'Left' ? this.stockChart.stockLegendModule.legendBounds.width : 0;\n this.mouseY += this.stockChart.legendSettings.position === 'Top' ? this.stockChart.stockLegendModule.legendBounds.height : 0;\n }\n }\n };\n /**\n * Export method for the chart.\n */\n Chart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Handles the chart resize.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartResize = function () {\n var _this = this;\n this.animateSeries = false;\n var arg = {\n chart: this,\n name: resized,\n currentSize: new Size(0, 0),\n previousSize: new Size(this.availableSize.width, this.availableSize.height)\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed || _this.stockChart) {\n clearTimeout(_this.resizeTo);\n return;\n }\n _this.createChartSvg();\n arg.currentSize = _this.availableSize;\n _this.trigger(resized, arg);\n _this.refreshAxis();\n _this.refreshBound();\n _this.trigger('loaded', { chart: _this.isBlazor ? {} : _this });\n }, 500);\n }\n return false;\n };\n /**\n * Handles the mouse move.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseMove = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.allowPan) {\n return false;\n }\n if (e.type === 'touchmove') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || this.isTouch;\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = pageX;\n this.previousPageY = pageY;\n if (getElement(this.svgId)) {\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseMove(e);\n }\n return false;\n };\n /**\n * Handles the mouse leave.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseLeave = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.stockChart && this.stockChart.onPanning) {\n return false;\n }\n if (e.type === 'touchleave') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = null;\n this.previousPageY = null;\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseLeave(e);\n return false;\n };\n /**\n * Handles the mouse leave on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseLeave = function (e) {\n var element = e.target;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.trigger(chartMouseLeave, { target: element.id, x: this.mouseX, y: this.mouseY });\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n this.isChartDrag = this.isPointMouseDown = false;\n this.notify(cancelEvent, e);\n return false;\n };\n /**\n * Handles the mouse double click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnDoubleClick = function (e) {\n var element = e.target;\n this.trigger(chartDoubleClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartKeyDown = function (e) {\n var actionKey = '';\n if ((this.isZoomed && e.code === 'Tab') || e.code === 'Space') {\n e.preventDefault();\n }\n if (this.tooltip.enable && ((e.code === 'Tab' && this.previousTargetId.indexOf('Series') > -1) || e.code === 'Escape')) {\n actionKey = 'ESC';\n }\n if (this.highlightMode !== 'None' && e.code === 'Tab' && this.previousTargetId.indexOf('_chart_legend_') > -1) {\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n }\n if (e.ctrlKey && (e.key === '+' || e.code === 'Equal' || e.key === '-' || e.code === 'Minus')) {\n e.preventDefault();\n this.isZoomed = this.zoomModule && (this.zoomSettings.enableDeferredZooming || this.zoomSettings.enableSelectionZooming ||\n this.zoomSettings.enablePinchZooming || this.zoomSettings.enableMouseWheelZooming);\n //this.tooltipModule.fadeOut(this.element);\n actionKey = this.isZoomed ? e.code : '';\n }\n else if (e['keyCode'] === 82 && this.isZoomed) { // KeyCode 82 (R) for reseting\n e.preventDefault();\n this.isZoomed = false;\n actionKey = 'R';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n actionKey = this.isZoomed ? e.code : '';\n }\n if (e.ctrlKey && (e.key === 'p')) {\n e.preventDefault();\n actionKey = 'CtrlP';\n }\n if (actionKey !== '')\n this.chartKeyboardNavigations(e, e.target.id, actionKey);\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartKeyUp = function (e) {\n var actionKey = '';\n var targetId = e.target['id'];\n var groupElement;\n var markerGroup;\n var targetElement = e.target;\n var titleElement = getElement(this.element.id + '_ChartTitle');\n var seriesElement = getElement(this.element.id + 'SeriesCollection');\n var legendElement = getElement(this.element.id + '_chart_legend_translate_g');\n var pagingElement = getElement(this.element.id + '_chart_legend_pageup');\n if (titleElement) {\n titleElement.setAttribute('class', 'e-chart-focused');\n }\n if (seriesElement && seriesElement.firstElementChild && seriesElement.firstElementChild.children[1]) {\n var firstChild = seriesElement.firstElementChild.children[1];\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (legendElement) {\n var firstChild = legendElement.firstElementChild;\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (pagingElement) {\n pagingElement.setAttribute('class', 'e-chart-focused');\n }\n if (e.code === 'Tab') {\n if (this.previousTargetId !== '') {\n if ((this.previousTargetId.indexOf('_Series_') > -1 && targetId.indexOf('_Series_') === -1)) {\n groupElement = getElement(this.element.id + 'SeriesCollection');\n var previousElement = this.previousTargetId.indexOf('_Symbol') > -1 ?\n getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).children[this.currentPointIndex + 1] :\n (this.previousTargetId.indexOf('_Point_') > -1 ?\n groupElement.children[this.currentSeriesIndex].children[this.currentPointIndex + 1] :\n groupElement.children[this.currentSeriesIndex]);\n this.setTabIndex(previousElement, groupElement.firstElementChild);\n this.currentPointIndex = 0;\n this.currentSeriesIndex = 0;\n }\n else if (this.previousTargetId.indexOf('_chart_legend_page') > -1 && targetId.indexOf('_chart_legend_page') === -1\n && targetId.indexOf('_chart_legend_g_') === -1) {\n this.setTabIndex(e.target, getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (this.previousTargetId.indexOf('_chart_legend_g_') > -1 && targetId.indexOf('_chart_legend_g_') === -1) {\n groupElement = getElement(this.element.id + '_chart_legend_translate_g');\n this.setTabIndex(groupElement.children[this.currentLegendIndex], groupElement.firstElementChild);\n }\n }\n this.previousTargetId = targetId;\n if (targetId.indexOf('SeriesGroup') > -1) {\n this.currentSeriesIndex = +targetId.split('SeriesGroup')[1];\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (targetElement.children[1].id.indexOf('_Point_') === -1) {\n markerGroup = getElement(this.element.id + 'SymbolGroup' + targetId.split('SeriesGroup')[1]);\n }\n targetId = this.focusChild((markerGroup != null ? markerGroup.children[1] : targetElement.children[1]));\n }\n actionKey = this.highlightMode !== 'None' || this.tooltip.enable ? 'Tab' : '';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n this.previousTargetId = targetId;\n if (targetId.indexOf('_chart_legend_page') > -1) {\n if (e.code === 'ArrowLeft') {\n getElement(this.element.id + '_chart_legend_pagedown').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (e.code === 'ArrowRight') {\n getElement(this.element.id + '_chart_legend_pageup').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pagedown'));\n }\n }\n else if ((targetId.indexOf('_chart_legend_') > -1)) {\n var legendElement_1 = targetElement.parentElement.children;\n legendElement_1[this.currentLegendIndex].removeAttribute('tabindex');\n this.currentLegendIndex += (e.code === 'ArrowUp' || e.code === 'ArrowRight') ? +1 : -1;\n this.currentLegendIndex = this.getActualIndex(this.currentLegendIndex, legendElement_1.length);\n var currentLegend = legendElement_1[this.currentLegendIndex];\n this.focusChild(currentLegend);\n targetId = currentLegend.children[1].id;\n actionKey = this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n else if (targetId.indexOf('_Series_') > -1) {\n groupElement = targetElement.parentElement.parentElement;\n var currentPoint = e.target;\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n var seriesIndexes = [];\n for (var i = 0; i < groupElement.children.length; i++) {\n if (groupElement.children[i].id.indexOf('SeriesGroup') > -1) {\n seriesIndexes.push(+groupElement.children[i].id.split('SeriesGroup')[1]);\n }\n }\n this.currentSeriesIndex = seriesIndexes.indexOf(this.currentSeriesIndex) + (e.code === 'ArrowRight' ? 1 : -1);\n this.currentSeriesIndex = seriesIndexes[this.getActualIndex(this.currentSeriesIndex, seriesIndexes.length)];\n }\n else {\n this.currentPointIndex += e.code === 'ArrowUp' ? 1 : -1;\n }\n if (targetId.indexOf('_Symbol') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex + '_Symbol');\n }\n else if (targetId.indexOf('_Point_') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SeriesGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex);\n }\n targetId = this.focusChild(currentPoint);\n actionKey = this.tooltip.enable || this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n }\n else if ((e.code === 'Enter' || e.code === 'Space') && ((targetId.indexOf('_chart_legend_') > -1) ||\n (targetId.indexOf('_Point_') > -1))) {\n targetId = (targetId.indexOf('_chart_legend_page') > -1) ? targetId : ((targetId.indexOf('_chart_legend_') > -1) ?\n targetElement.children[1].id : targetId);\n actionKey = 'Enter';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, targetId, actionKey);\n }\n return false;\n };\n Chart.prototype.setTabIndex = function (previousElement, currentElement) {\n if (previousElement) {\n previousElement.removeAttribute('tabindex');\n }\n if (currentElement) {\n currentElement.setAttribute('tabindex', '0');\n }\n };\n Chart.prototype.getActualIndex = function (index, totalLength) {\n return index > totalLength - 1 ? 0 : (index < 0 ? totalLength - 1 : index);\n };\n Chart.prototype.focusChild = function (element) {\n element.setAttribute('tabindex', '0');\n var className = element.getAttribute('class');\n element.setAttribute('tabindex', '0');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = 'e-chart-focused ' + className;\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n element.setAttribute('class', className);\n element.focus();\n return element.id;\n };\n /**\n * Handles the document onkey.\n *\n * @private\n */\n Chart.prototype.documentKeyHandler = function (e) {\n // 74 - J\n if (e.altKey && e.keyCode === 74 && !isNullOrUndefined(this.element)) {\n this.element.focus();\n }\n };\n Chart.prototype.chartKeyboardNavigations = function (e, targetId, actionKey) {\n this.isLegendClicked = false;\n switch (actionKey) {\n case 'Tab':\n case 'ArrowMove':\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n if (targetId.indexOf('_Point_') > -1) {\n var seriesIndex = +(targetId.split('_Series_')[1].split('_Point_')[0]);\n var pointIndex = +(targetId.split('_Series_')[1].replace('_Symbol', '').split('_Point_')[1]);\n var pointRegion = this.visibleSeries[seriesIndex].points[pointIndex].symbolLocations[0];\n this.mouseX = pointRegion.x + this.initialClipRect.x;\n this.mouseY = pointRegion.y + this.initialClipRect.y;\n if (this.highlightModule) {\n this.highlightModule.highlightChart(document.getElementById(targetId), 'mousemove');\n this.highlightModule.completeSelection(document.getElementById(targetId), 'mousemove');\n }\n if (this.tooltipModule) {\n this.tooltipModule.tooltip();\n }\n }\n if (this.highlightModule && this.highlightMode !== 'None') {\n targetId = targetId.indexOf('_chart_legend_g_') > -1 ? document.getElementById(targetId).firstChild['id'] : targetId;\n var legendID = this.element.id + '_chart_legend';\n var legendItemsId = [legendID + '_text_', legendID + '_shape_marker_',\n legendID + '_shape_'];\n for (var i = 0; i < legendItemsId.length; i++) {\n var id = legendItemsId[i];\n if (targetId.indexOf(id) > -1) {\n document.getElementById(targetId).setAttribute('class', '');\n this.highlightModule.legendSelection(this, parseInt(targetId.split(id)[1], 10), document.getElementById(targetId), 'mousemove');\n break;\n }\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (targetId.indexOf('_chart_legend_') > -1) {\n this.isLegendClicked = true;\n this.legendModule.click(e);\n this.focusChild(document.getElementById(targetId).parentElement);\n }\n else {\n this.selectionModule.calculateSelectedElements(document.getElementById(targetId), 'click');\n }\n break;\n case 'CtrlP':\n this.print();\n break;\n case 'ESC':\n this.tooltipModule.removeTooltip(1);\n break;\n case 'Equal':\n case 'Minus':\n this.zoomModule.isZoomed = this.zoomModule.performedUI = true;\n this.zoomModule.isPanning = this.isChartDrag = false;\n if (actionKey === 'Equal') {\n this.zoomModule.toolkit.zoomInOutCalculation(1, this, this.axisCollections, this.zoomSettings.mode);\n }\n else {\n this.zoomModule.toolkit.zoomInOutCalculation(-1, this, this.axisCollections, this.zoomSettings.mode);\n }\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n var yArrowPadding = actionKey === 'ArrowUp' ? 10 : (actionKey === 'ArrowDown' ? -10 : 0);\n var xArrowPadding = actionKey === 'ArrowLeft' ? -10 : (actionKey === 'ArrowRight' ? 10 : 0);\n this.zoomModule.isPanning = this.isChartDrag = true;\n this.zoomModule.doPan(this, this.axisCollections, xArrowPadding, yArrowPadding);\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'R':\n this.zoomModule.toolkit.reset(e);\n break;\n }\n };\n /**\n * Handles the mouse click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseClick = function (e) {\n var _this = this;\n var element = e.target;\n var chart = this;\n this.clickCount++;\n var timeInterval = 400;\n if (this.clickCount === 1) {\n this.singleClickTimer = +setTimeout(function () {\n chart.clickCount = 0;\n chart.trigger(chartMouseClick, { target: element.id, x: chart.mouseX, y: chart.mouseY });\n }, timeInterval);\n }\n else if (this.clickCount === 2 && !this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n }\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n var observers = 'observers';\n timeInterval = this.pointDoubleClick[observers].length > 0 ? 400 : 0;\n }\n else {\n timeInterval = this.pointDoubleClick ? 400 : 0;\n }\n if (this.clickCount === 1 && this.pointClick) {\n this.singleClickTimer = +setTimeout(function () {\n _this.clickCount = 0;\n _this.triggerPointEvent(pointClick, e);\n }, timeInterval);\n }\n else if (this.clickCount === 2 && this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n this.triggerPointEvent(pointDoubleClick, e);\n }\n if (this.axisLabelClick) {\n this.triggerAxisLabelClickEvent(axisLabelClick, e);\n }\n this.notify('click', e);\n return false;\n };\n Chart.prototype.triggerPointEvent = function (event, e) {\n var evt = e;\n var data = new ChartData(this);\n var pointData = data.getData();\n if (pointData.series && pointData.point) {\n this.trigger(event, {\n series: this.isBlazor ? {} : pointData.series,\n point: pointData.point,\n seriesIndex: pointData.series.index, pointIndex: pointData.point.index,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n Chart.prototype.triggerAxisLabelClickEvent = function (event, e) {\n var targetElement = e.target;\n var clickEvt = e;\n if (targetElement.id.indexOf('_AxisLabel_') !== -1) {\n var index = targetElement.id.split('_AxisLabel_');\n var axisIndex = +index[0].slice(-1);\n var labelIndex = +index[1];\n var currentAxis = this.axisCollections[axisIndex];\n if (currentAxis.visible && (axisIndex === 0 || axisIndex === 1)) {\n this.trigger(event, {\n chart: this,\n axis: currentAxis,\n text: currentAxis.visibleLabels[labelIndex].text,\n labelID: targetElement.id,\n index: labelIndex,\n location: new ChartLocation(clickEvt.pageX, clickEvt.pageY),\n value: currentAxis.visibleLabels[labelIndex].value\n });\n }\n }\n };\n /**\n * Handles the mouse move on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseMove = function (e) {\n var element = e.target;\n this.trigger(chartMouseMove, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e);\n }\n // Tooltip for chart series.\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n this.axisTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseMove(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n this.isTouch = false;\n return false;\n };\n Chart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_ChartTitle') || targetId === (this.element.id + '_ChartSubTitle') ||\n targetId.indexOf('_AxisTitle') > -1 || targetId.indexOf('_legend_title') > -1);\n var index = 0;\n if (targetId.indexOf('_AxisTitle') > -1) {\n index = parseInt(((targetId.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_')[2], 10);\n }\n if (id && (event.target.textContent.indexOf('...') > -1)) {\n var title = (targetId === (this.element.id + '_ChartTitle')) ? this.title :\n targetId.indexOf('_AxisTitle') > -1 ? this.axisCollections[index].title :\n targetId.indexOf('_ChartSubTitle') > -1 ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n Chart.prototype.axisTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (((targetId.indexOf('AxisLabel') > -1) || targetId.indexOf('Axis_MultiLevelLabel') > -1) &&\n (event.target.textContent.indexOf('...') > -1)) {\n var isTitleOrLegendEnabled = (this.legendSettings.visible || this.primaryXAxis.title === '');\n showTooltip(this.findAxisLabel(targetId), x, y, this.element.offsetWidth, this.element.id + '_EJ2_AxisLabel_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch, isTitleOrLegendEnabled);\n }\n else {\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n }\n };\n Chart.prototype.findAxisLabel = function (text) {\n var texts;\n if (text.indexOf('AxisLabel') > -1) {\n texts = ((text.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_');\n return this.axisCollections[parseInt(texts[0], 10)].visibleLabels[parseInt(texts[1], 10)].originalText;\n }\n else {\n texts = ((text.replace(this.element.id, '')).replace('Axis_MultiLevelLabel_Level_', '').replace('Text_', '')).split('_');\n return (this.axisCollections[parseInt(texts[0], 10)].multiLevelLabels[parseInt(texts[1], 10)]\n .categories[parseInt(texts[2], 10)].text);\n }\n };\n /**\n * Handles the mouse down on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseDown = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var offset = Browser.isDevice ? 20 : 30;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n if (this.stockChart && this.stockChart.zoomSettings.enablePan) {\n this.allowPan = true;\n }\n this.trigger(chartMouseDown, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.clientX;\n pageY = e.clientY;\n target = e.target;\n }\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n this.mouseDownX = this.previousMouseMoveX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n this.mouseDownY = this.previousMouseMoveY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n if (this.isTouch) {\n this.isDoubleTap = (new Date().getTime() < this.threshold && target.id.indexOf(this.element.id + '_Zooming_') === -1 &&\n (this.mouseDownX - offset >= this.mouseX || this.mouseDownX + offset >= this.mouseX) &&\n (this.mouseDownY - offset >= this.mouseY || this.mouseDownY + offset >= this.mouseY) &&\n (this.mouseX - offset >= this.mouseDownX || this.mouseX + offset >= this.mouseDownX) &&\n (this.mouseY - offset >= this.mouseDownY || this.mouseY + offset >= this.mouseDownY));\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseDown();\n }\n this.notify(Browser.touchStartEvent, e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseEnd = function (e) {\n var pageY;\n var pageX;\n var touchArg;\n if (e.type === 'touchend') {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n this.isTouch = true;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageY = e.clientY;\n pageX = e.clientX;\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseUp(e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.chartOnMouseUp = function (e) {\n var element = e.target;\n this.trigger(chartMouseUp, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.isChartDrag = false;\n this.allowPan = false;\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.axisTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.threshold = new Date().getTime() + 300;\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseUp();\n }\n if (!this.enableCanvas && this.seriesElements) {\n this.seriesElements.removeAttribute('clip-path');\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /**\n * Method to set culture for chart\n */\n Chart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * Method to set the annotation content dynamically for chart.\n */\n Chart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n var annotation = this.annotations[annotationIndex];\n var element;\n if (content !== null) {\n annotation.content = content;\n if (parentNode) {\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n element = this.createElement('div');\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Method to set locale constants\n */\n Chart.prototype.setLocaleConstants = function () {\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ResetZoom: 'Reset Zoom'\n };\n };\n /**\n * Theming for chart\n */\n Chart.prototype.setTheme = function () {\n /*! Set theme */\n this.themeStyle = getThemeColor(this.theme, this.enableCanvas);\n if (!(document.getElementById(this.element.id + 'Keyboard_chart_focus'))) {\n var style = document.createElement('style');\n style.setAttribute('id', this.element.id + 'Keyboard_chart_focus');\n style.innerText = '.e-chart-focused:focus, path[class*=_ej2_chart_selection_series]:focus,' +\n 'path[id*=_Point_]:focus, text[id*=_ChartTitle]:focus {outline: none } .e-chart-focused:focus-visible, path[class*=_ej2_chart_selection_series]:focus-visible,' +\n 'path[id*=_Point_]:focus-visible, text[id*=_ChartTitle]:focus-visible {outline: 1.5px ' + this.themeStyle.tabColor + ' solid}';\n document.body.appendChild(style);\n }\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]}\n * @private\n */\n /* eslint-disable */\n Chart.prototype.requiredModules = function () {\n var _this = this;\n var modules = [];\n var series = this.series;\n var enableAnnotation = false;\n var moduleName;\n var errorBarVisible = false;\n var isPointDrag = false;\n var dataLabelEnable = false;\n var zooming = this.zoomSettings;\n this.chartAreaType = (series.length > 0 && (series[0].type === 'Polar' || series[0].type === 'Radar')) ? 'PolarRadar' : 'Cartesian';\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this]\n });\n }\n series.map(function (value) {\n _this.isLegend = (_this.legendSettings.visible && ((value.name !== '') || !!_this.isLegend));\n moduleName = value.type.indexOf('100') !== -1 ? value.type.replace('100', '') + 'Series' : value.type + 'Series';\n errorBarVisible = value.errorBar.visible || errorBarVisible;\n dataLabelEnable = value.marker.dataLabel.visible || dataLabelEnable || (value.type == 'Pareto' && value.paretoOptions.marker.dataLabel.visible);\n isPointDrag = value.dragSettings.enable || isPointDrag;\n if (!modules.some(function (currentModule) {\n return currentModule.member === moduleName;\n })) {\n modules.push({\n member: moduleName,\n args: [_this, series]\n });\n }\n if (_this.chartAreaType === 'PolarRadar') {\n modules.push({\n member: value.drawType + 'Series',\n args: [_this, series]\n });\n }\n if (value.type === 'Pareto') {\n modules.push({\n member: 'ColumnSeries',\n args: [_this, series]\n });\n modules.push({\n member: 'LineSeries',\n args: [_this, series]\n });\n }\n });\n this.findIndicatorModules(modules);\n this.findTrendLineModules(modules);\n modules = this.findAxisModule(modules);\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (errorBarVisible) {\n modules.push({\n member: 'ErrorBar',\n args: [this, series]\n });\n }\n if (this.isLegend) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && !this.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan || zooming.enableScrollbar || zooming.showToolbar)) {\n modules.push({\n member: 'Zoom',\n args: [this, this.zoomSettings]\n });\n if (zooming.enableScrollbar) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n }\n if (this.selectionMode !== 'None' && !(this.chartAreaType === 'PolarRadar' &&\n this.selectionMode.indexOf('Drag') > -1)) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None' || this.legendSettings.enableHighlight) {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (dataLabelEnable) {\n modules.push({\n member: 'DataLabel',\n args: [this, series]\n });\n }\n if (isPointDrag) {\n modules.push({\n member: 'DataEditing',\n args: [this]\n });\n }\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findAxisModule = function (modules) {\n var axisCollections = [];\n axisCollections.push(this.primaryXAxis);\n axisCollections.push(this.primaryYAxis);\n axisCollections = axisCollections.concat(this.axes);\n var datetimeEnabled = false;\n var categoryEnabled = false;\n var logarithmicEnabled = false;\n var striplineEnabled = false;\n var dateTimeCategoryEnabled = false;\n var multiLevelEnabled = false;\n for (var _i = 0, axisCollections_1 = axisCollections; _i < axisCollections_1.length; _i++) {\n var axis = axisCollections_1[_i];\n datetimeEnabled = axis.valueType === 'DateTime' || datetimeEnabled;\n categoryEnabled = axis.valueType === 'Category' || categoryEnabled;\n logarithmicEnabled = axis.valueType === 'Logarithmic' || logarithmicEnabled;\n dateTimeCategoryEnabled = axis.valueType === 'DateTimeCategory' || dateTimeCategoryEnabled;\n striplineEnabled = this.findStriplineVisibility(axis.stripLines) || striplineEnabled;\n multiLevelEnabled = axis.multiLevelLabels.length > 0 || multiLevelEnabled;\n this.scrollSettingEnabled = axis.scrollbarSettings.enable ? true : this.scrollSettingEnabled;\n }\n if (datetimeEnabled) {\n modules.push({\n member: 'DateTime',\n args: [this]\n });\n }\n if (categoryEnabled) {\n modules.push({\n member: 'Category',\n args: [this]\n });\n }\n if (logarithmicEnabled) {\n modules.push({\n member: 'Logarithmic',\n args: [this]\n });\n }\n if (striplineEnabled) {\n modules.push({\n member: 'StripLine',\n args: [this]\n });\n }\n if (multiLevelEnabled) {\n modules.push({\n member: 'MultiLevelLabel',\n args: [this]\n });\n }\n if (dateTimeCategoryEnabled) {\n modules.push({\n member: 'DateTimeCategory',\n args: [this]\n });\n }\n if (this.scrollSettingEnabled) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findIndicatorModules = function (modules) {\n var macdEnable;\n var bandEnable;\n var indicators = this.indicators;\n if (this.indicators.length) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n indicators.map(function (indicator) {\n macdEnable = macdEnable || indicator.type === 'Macd';\n bandEnable = bandEnable || indicator.type === 'BollingerBands';\n });\n if (macdEnable) {\n modules.push({\n member: 'ColumnSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'RangeAreaSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'SplineRangeAreaSeries',\n args: [this]\n });\n }\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n modules.push({\n member: indicator.type + 'Indicator',\n args: [this]\n });\n }\n }\n };\n Chart.prototype.findTrendLineModules = function (modules) {\n var isLine;\n var isSpline;\n var _loop_1 = function (series) {\n var markerEnable;\n series.trendlines.map(function (trendline) {\n markerEnable = markerEnable || trendline.marker.visible;\n isLine = isLine || (trendline.type === 'Linear' || trendline.type === 'MovingAverage') ? true : false;\n isSpline = isSpline || (!isLine || (trendline.type === 'Exponential' || trendline.type === 'Logarithmic' || trendline.type === 'Power' || trendline.type === 'Polynomial')) ? true : false;\n });\n if (markerEnable) {\n modules.push({\n member: 'Marker',\n args: [this_1, series]\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n if (isLine || isSpline) {\n modules.push({\n member: 'TrendLine',\n args: [this]\n });\n }\n if (isLine) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n }\n if (isSpline) {\n modules.push({\n member: 'SplineSeries',\n args: [this]\n });\n }\n };\n Chart.prototype.findStriplineVisibility = function (striplines) {\n var visible = false;\n for (var _i = 0, striplines_1 = striplines; _i < striplines_1.length; _i++) {\n var stripline = striplines_1[_i];\n if (stripline.visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To Remove the SVG.\n * @return {boolean}\n * @private\n */\n Chart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n if (this.enableCanvas && this.svgObject && this.svgObject.tagName === 'CANVAS') {\n this.renderer.clearRect(new Rect(0, 0, this.availableSize.width, this.availableSize.height));\n if (this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n return null;\n }\n removeElement(this.element.id + '_Secondary_Element');\n if (this.isReact) {\n this.clearTemplate();\n }\n var removeLength = 0;\n if (this.zoomModule && this.zoomModule.pinchTarget) {\n this.zoomModule.pinchTarget.id = '';\n this.zoomModule.pinchTarget.setAttribute('opacity', '0');\n this.svgObject.appendChild(this.zoomModule.pinchTarget);\n removeLength = 1;\n }\n // Fix for blazor resize issue\n if (!isNullOrUndefined(this.resizeTo)) {\n if (this.resizeTo !== this.checkResize && this.isBlazor && this.element.childElementCount) {\n var containerCollection = document.querySelectorAll('.e-chart');\n for (var index = 0; index < containerCollection.length; index++) {\n var container = containerCollection[index];\n while (container.firstChild) {\n remove(container.firstChild);\n }\n }\n }\n this.checkResize = this.resizeTo;\n }\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > removeLength) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode && !(this.stockChart)) {\n remove(this.svgObject);\n }\n }\n };\n Chart.prototype.refreshDefinition = function (definitions) {\n for (var _i = 0, definitions_1 = definitions; _i < definitions_1.length; _i++) {\n var item = definitions_1[_i];\n item.axes = [];\n }\n };\n /**\n * Refresh the axis default value.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.refreshAxis = function () {\n var axis = this.primaryXAxis;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis = this.primaryYAxis;\n axis.isStack100 = false;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n for (var _i = 0, _a = this.axes; _i < _a.length; _i++) {\n var item = _a[_i];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n for (var _b = 0, _c = this.paretoSeriesModule.paretoAxes; _b < _c.length; _b++) {\n var item = _c[_b];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n }\n };\n Chart.prototype.axisChange = function (axis) {\n if (!axis.name && !axis.valueType) {\n return false;\n }\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData();\n return true;\n };\n /**\n * Get visible series by index\n */\n Chart.prototype.getVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Fix for live data update flicker issue\n */\n Chart.prototype.refreshLiveData = function () {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n if (!this.isBlazor) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n /**\n * To remove style element\n */\n Chart.prototype.removeStyles = function () {\n removeElement(this.element.id + '_ej2_chart_selection');\n removeElement(this.element.id + '_ej2_chart_highlight');\n };\n /**\n * To trigger the manual mouse move event for live chart tooltip\n */\n Chart.prototype.mouseMoveEvent = function () {\n if (this.tooltip.enable && this.previousPageX !== null && this.previousPageY !== null) {\n var mousemove = document.createEvent('MouseEvent');\n mousemove.initMouseEvent('mousemove', true, false, window, 1, 100, 100, this.previousPageX, this.previousPageY, false, false, false, false, 0, null);\n this.element.dispatchEvent(mousemove);\n }\n };\n /**\n * Displays a tooltip for the data points.\n *\n * @param {object} x - Specifies the x value of the point or x coordinate.\n * @param {number} y - Specifies the x value of the point or y coordinate.\n * @param {boolean} isPoint - Specifies whether x and y are data point or chart coordinates.\n * @returns {void}\n */\n Chart.prototype.showTooltip = function (x, y, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n if (isPoint) {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n var pointX = series.xAxis.valueType == 'DateTime' ? point.xValue : point.x;\n var xValue = x;\n if (series.xAxis.valueType == 'DateTime') {\n xValue = new Date(xValue).getTime();\n }\n if (x == pointX && y === point.yValue) {\n this.mouseX = point.regions[0].x + this.chartAxisLayoutPanel.seriesClipRect.x;\n this.mouseY = point.regions[0].y + this.chartAxisLayoutPanel.seriesClipRect.y;\n this.tooltipModule.tooltip();\n this.markerRender.mouseMoveHandler();\n break;\n }\n }\n }\n }\n else {\n if (this.isTouch) {\n this.startMove = true;\n }\n this.mouseX = x;\n this.mouseY = y;\n this.tooltipModule.mouseMoveHandler();\n this.markerRender.mouseMoveHandler();\n }\n };\n /**\n * Hides a tooltip in the chart.\n *\n * @returns {void}\n */\n Chart.prototype.hideTooltip = function () {\n this.tooltipModule.removeTooltip(Browser.isDevice ? 2000 : 1000);\n };\n /**\n * Displays a crosshair for the chart.\n *\n * @param {object} x - Specifies the x value of the point or x coordinate.\n * @param {number} y - Specifies the x value of the point or y coordinate.\n * @returns {void}\n */\n Chart.prototype.showCrosshair = function (x, y) {\n this.mouseX = x;\n this.mouseY = y;\n this.isCrosshair = false;\n if (withInBounds(this.mouseX, this.mouseY, this.chartAxisLayoutPanel.seriesClipRect)) {\n this.crosshairModule.crosshair();\n }\n else {\n this.hideCrosshair();\n }\n this.isCrosshair = true;\n };\n /**\n * Hides a tooltip in the chart.\n *\n * @returns {void}\n */\n Chart.prototype.hideCrosshair = function () {\n this.crosshairModule.removeCrosshair(Browser.isDevice ? 2000 : 1000);\n };\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\n var axis;\n if (!this.delayRedraw) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'primaryXAxis':\n axis = newProp.primaryXAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryXAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'primaryYAxis':\n axis = newProp.primaryYAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryYAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'axes':\n for (var _b = 0, _c = Object.keys(newProp.axes); _b < _c.length; _b++) {\n var index = _c[_b];\n axis = newProp.axes[index];\n refreshBounds = refreshBounds || this.axisChange(axis);\n if (!axis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.axes[index].setIsInversedAndOpposedPosition();\n }\n }\n break;\n case 'height':\n case 'width':\n this.createChartSvg();\n refreshBounds = true;\n break;\n case 'subTitle':\n case 'title':\n refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'dataSource':\n this.processData(false);\n refreshBounds = true;\n break;\n case 'enableCanvas':\n this.refresh();\n break;\n case 'series':\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n // I264774 blazor series visible property binding not working issue fixed.\n if (this.isBlazor && series && ((series.visible !== oldProp.series[i].visible) || series.isClosed ||\n series.marker || series.emptyPointSettings || series.type || series.boxPlotMode || series.showMean)) {\n blazorProp = true;\n }\n if (!isNullOrUndefined(series) && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close || series.trendlines ||\n series.fill || series.name || series.marker || series.width || series.binInterval || series.type || (series.visible !== oldProp.series[i].visible) || blazorProp)) {\n extend(this.getVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n }\n if (seriesRefresh) {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n refreshBounds = true;\n }\n break;\n case 'indicators':\n refreshBounds = true;\n break;\n case 'zoomSettings':\n if (newProp.zoomSettings.enableScrollbar || oldProp.zoomSettings.enableScrollbar) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'chartArea':\n if (newProp.chartArea.border && newProp.chartArea.border.width) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'legendSettings':\n if (!newProp.legendSettings.background || !newProp.legendSettings.opacity) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'palettes':\n this.calculateVisibleSeries();\n renderer = true;\n break;\n case 'selectedDataIndexes':\n if (this.selectionModule) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.selectedDataIndexes = this.selectedDataIndexes;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n else if (this.highlightModule) {\n this.highlightModule.currentMode = this.highlightMode;\n this.highlightModule.highlightDataIndexes = this.selectedDataIndexes;\n this.highlightModule.styleId = this.element.id + '_ej2_chart_highlight';\n this.highlightModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'selectionMode':\n if (this.selectionModule && newProp.selectionMode && newProp.selectionMode.indexOf('Drag') === -1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'isMultiSelect':\n if (this.selectionModule && !newProp.isMultiSelect && this.selectionModule.selectedDataIndexes.length > 1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'highlightMode':\n case 'selectionPattern':\n case 'highlightPattern':\n this.removeStyles();\n renderer = true;\n break;\n case 'theme':\n this.animateSeries = true;\n break;\n case 'enableRtl':\n case 'locale':\n case 'currencyCode':\n if (this.isBlazor) {\n this.setCulture();\n renderer = true;\n }\n else {\n this.refresh();\n }\n break;\n case 'tooltip':\n if (this.tooltipModule) { // To check the tooltip enable is true.\n this.tooltipModule.previousPoints = [];\n if (this.tooltip.template) {\n this.tooltipModule.template = this.tooltip.template;\n }\n }\n break;\n }\n }\n if (!refreshBounds && renderer) {\n this.rotatedDataLabelCollections = [];\n this.removeSvg();\n this.renderElements();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (refreshBounds) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n if (this.isReact) {\n this.clearTemplate();\n }\n this.dragY = null;\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n this.redraw = false;\n this.animated = false;\n }\n }\n };\n __decorate([\n Property(null)\n ], Chart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"16px\", fontStyle: 'Normal', fontWeight: '600', color: null }, titleSettings)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '400', color: null }, titleSettings)\n ], Chart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Chart.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Chart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"background\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], Chart.prototype, \"chartArea\", void 0);\n __decorate([\n Complex({ name: 'primaryXAxis' }, Axis)\n ], Chart.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({ name: 'primaryYAxis' }, Axis)\n ], Chart.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Collection([{}], Row)\n ], Chart.prototype, \"rows\", void 0);\n __decorate([\n Collection([{}], Column)\n ], Chart.prototype, \"columns\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], Chart.prototype, \"axes\", void 0);\n __decorate([\n Collection([{}], Series)\n ], Chart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], ChartAnnotationSettings)\n ], Chart.prototype, \"annotations\", void 0);\n __decorate([\n Property([])\n ], Chart.prototype, \"palettes\", void 0);\n __decorate([\n Property('Material')\n ], Chart.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Chart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], Chart.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Chart.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([{}], RangeColorSetting)\n ], Chart.prototype, \"rangeColorSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Chart.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"highlightColor\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowExport\", void 0);\n __decorate([\n Collection([], Indexes)\n ], Chart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableAutoIntervalOnBothAxis\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Collection([], TechnicalIndicator)\n ], Chart.prototype, \"indicators\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], Chart.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisRangeCalculated\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"sharedTooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"onZooming\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollEnd\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragEnd\", void 0);\n __decorate([\n Property('USD')\n ], Chart.prototype, \"currencyCode\", void 0);\n Chart = __decorate([\n NotifyPropertyChanges\n ], Chart);\n return Chart;\n}(Component));\nexport { Chart };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else if ((!this.enableVirtualization) || (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource)))) {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n filterQuery.skip(this.virtualItemStartIndex);\n filterQuery.take(takeValue);\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n var isHtmlElement = /<[^>]*>/g.test(e.item.innerText);\n if (isHtmlElement) {\n e.item.innerText = e.item.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { Property, Complex, ChildProperty, Collection, extend, Browser } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accept input both as '100px' and '100%'.\n * If specified as '100%, row renders to the full height of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n return _this;\n }\n /**\n * Measure the row size\n *\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var width = 0;\n var innerPadding = (axis.labelPosition === 'Inside' && (chart.axes.indexOf(axis) > -1)) ? -5 : 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as like '100px' or '100%'.\n * If specified as '100%, column renders to the full width of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n *\n * @returns {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair ToolTip.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Configures the axes in the chart.\n *\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n *\n * @private\n */\n _this.internalVisibility = true;\n /**\n * This property is used to place the vertical axis in opposed position and horizontal axis in inversed\n * when RTL is enabled in chart\n *\n * @private */\n _this.isRTLEnabled = false;\n _this.angle = _this.labelRotation;\n return _this;\n }\n /**\n * The function used to find tick size.\n *\n * @returns {number} tick line size\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.isAxisOpposedPosition && this.crossAt >= range.max) || (this.isAxisOpposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n *\n * @returns {number} labelSize\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding, definition, chart) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n var angle = this.titleRotation;\n if ((isNullOrUndefined(angle))) {\n this.titleSize = measureText(this.title, this.titleStyle, chart.themeStyle.axisTitleFont);\n titleSize = this.titleSize.height + innerPadding;\n }\n else {\n this.titleSize = rotateTextSize(this.titleStyle, this.title, angle, chart);\n titleSize = (this.orientation === 'Vertical' ? this.titleSize.width : this.titleSize.height) + innerPadding;\n }\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1, chart.enableRtl, chart.themeStyle.legendLabelFont);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n if (this.isAxisOpposedPosition) {\n definition.insideFarSizes.push(labelSize);\n }\n else {\n definition.insideNearSizes.push(labelSize);\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateCrossValue = function () {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.isAxisOpposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.isAxisOpposedPosition) {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate visible range for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function (size) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isAxisInverse) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n *\n * @returns {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/
/g, ' '), this.labelStyle, chart.themeStyle.axisLabelFont);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n else {\n label.size = measureText(label.text, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('
');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isAxisInverse ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default:\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle, chart.enableRtl, null, null, chart.themeStyle.axisLabelFont);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle, chart.enableRtl, null, null, chart.themeStyle.axisLabelFont);\n }\n // eslint-disable-next-line no-case-declarations\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n previousEnd = this.isAxisInverse ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n else if (this.angle !== 0 && this.orientation === 'Vertical') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n *\n * @returns {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isAxisInverse ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n /**\n * Set the axis `opposedPosition` and `isInversed` properties.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.setIsInversedAndOpposedPosition = function (isPolar) {\n if (isPolar === void 0) { isPolar = false; }\n this.isAxisOpposedPosition = this.opposedPosition || (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical');\n if (this.opposedPosition && (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical')) {\n this.isAxisOpposedPosition = false;\n }\n this.isAxisInverse = this.isInversed || (this.isRTLEnabled && this.orientation === 'Horizontal');\n if (this.isInversed && (!isPolar && this.isRTLEnabled && this.orientation === 'Horizontal')) {\n this.isAxisInverse = false;\n }\n };\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"titleRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property(Browser.isDevice ? 'Rotate45' : 'Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = index;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth - target.scrollLeft) +\n (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\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 format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('div',{staticClass:\"col-lg-12 control-section\",staticStyle:{\"padding\":\"10px\",\"position\":\"relative\"}},[_c('div',{staticStyle:{\"width\":\"100%\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"id\":\"statusAlertGridId\",\"dataSource\":_vm.data,\"allowFiltering\":true,\"commandClick\":_vm.commandClick,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionComplete\":_vm.actionComplete,\"actionBegin\":_vm.actionBegin,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell,\"width\":\"100%\",\"height\":\"100%\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"triggerAlertId\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"triggerDate\",\"headerText\":\"Alert Date\",\"textAlign\":\"Right\",\"format\":_vm.dateFormatOptions,\"type\":\"date\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"alertType\",\"headerText\":\"Alert\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"clientName\",\"headerText\":\"Client\",\"allowEditing\":false,\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"stateName\",\"headerText\":\"Country\",\"allowEditing\":false,\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"companyName\",\"headerText\":\"Company\",\"allowEditing\":false,\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"contractName\",\"headerText\":\"Contract\",\"allowEditing\":false,\"width\":\"300\"}}),_c('e-column',{attrs:{\"field\":\"productName\",\"headerText\":\"Product\",\"allowEditing\":false,\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"pricingAreaName\",\"headerText\":\"Price Area\",\"textAlign\":\"Left\",\"width\":\"150\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"tradeablePeriodName\",\"headerText\":\"Period\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"triggerTypeName\",\"headerText\":\"Trigger Type\",\"visible\":true,\"width\":\"150\",\"textAlign\":\"Right\"}}),_c('e-column',{attrs:{\"field\":\"triggerPrice\",\"headerText\":\"Price\",\"textAlign\":\"Right\",\"validationRules\":_vm.percentageRules,\"type\":\"number\",\"format\":\"n3\",\"editType\":\"numericedit\",\"edit\":_vm.numericParams,\"width\":\"150\"}}),_c('e-column',{attrs:{\"headerText\":\"Watched Window\",\"columns\":_vm.dateColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"alertStatus\",\"headerText\":\"Status\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"headerText\":\"Actions\",\"width\":\"230\",\"textAlign\":\"left\",\"commands\":_vm.commands}}),_c('e-column',{attrs:{\"field\":\"utilityTypeName\",\"headerText\":\"Commodity\",\"allowEditing\":false,\"visible\":false,\"width\":\"90\"}}),_c('e-column',{attrs:{\"field\":\"tradeablePeriodId\",\"headerText\":\"Watched Period\",\"textAlign\":\"Right\",\"visible\":false,\"validationRules\":_vm.requiredRules,\"editType\":\"dropdownedit\",\"edit\":_vm.tradebalePeriodParams,\"foreignKeyField\":\"id\",\"foreignKeyValue\":\"name\",\"dataSource\":_vm.tradebalePeriods,\"width\":\"50\"}}),_c('e-column',{attrs:{\"field\":\"unit\",\"headerText\":\"Unit\",\"visible\":false,\"width\":\"60\"}}),_c('e-column',{attrs:{\"field\":\"tolerance\",\"headerText\":\"Tolerance\",\"visible\":false,\"textAlign\":\"Right\",\"validationRules\":_vm.percentageRules,\"type\":\"number\",\"format\":\"n1\",\"editType\":\"numericedit\",\"edit\":_vm.percentageParams,\"width\":\"70\"}}),_c('e-column',{attrs:{\"field\":\"referenceTypeId\",\"headerText\":\"Reference Type\",\"textAlign\":\"Right\",\"visible\":false,\"validationRules\":_vm.requiredRules,\"editType\":\"dropdownedit\",\"edit\":_vm.referenceTypeParams,\"foreignKeyField\":\"id\",\"foreignKeyValue\":\"name\",\"dataSource\":_vm.referenceTypes,\"width\":\"110\"}}),_c('e-column',{attrs:{\"field\":\"referenceTypeName\",\"headerText\":\"Reference Type\",\"visible\":false,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"applyUntilEnd\",\"headerText\":\"Apply until Default Deadline\",\"displayAsCheckBox\":\"true\",\"visible\":false,\"edit\":_vm.checkboxParams,\"editType\":\"booleanedit\",\"type\":\"boolean\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"notifyOnSystem\",\"headerText\":\"Notify On System\",\"defaultValue\":\"true\",\"displayAsCheckBox\":\"true\",\"visible\":false,\"allowEditing\":false,\"editType\":\"booleanedit\",\"type\":\"boolean\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"notifyEmailAddresses\",\"headerText\":\"Notify Email Addresses\",\"multiline\":\"true\",\"edit\":_vm.multilineParams,\"visible\":false,\"width\":\"120\"}})],1)],1)],1),_c('ejs-dialog',{ref:\"alertDialog\",attrs:{\"buttons\":_vm.alertDlgButtons,\"cssClass\":\"greyBackground\",\"id\":\"statusAlertDialog\",\"visible\":false,\"animationSettings\":_vm.animationSettings,\"showCloseIcon\":_vm.showCloseIcon,\"open\":_vm.dialogOpen,\"close\":_vm.dialogClose,\"width\":_vm.alertWidth,\"header\":_vm.header,\"allowDragging\":_vm.draggable,\"position\":_vm.position}},[_c('h5',{staticClass:\"ml-5\",attrs:{\"id\":\"graphHeader\"}},[_vm._v(\" \"+_vm._s(_vm.alertType)+\" Trigger\")]),_c('br'),_c('label',{staticClass:\"mr-5 float-right\"},[_vm._v(\"Alert issued on : \"+_vm._s(_vm.triggerDate))]),_c('br'),_c('br'),_c('label',{staticClass:\"ml-5\"},[_vm._v(_vm._s(_vm.alertText))]),_c('br'),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"column ml-3\"},[_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Client\")]),_vm._v(\": \"+_vm._s(_vm.client))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Country\")]),_vm._v(\": \"+_vm._s(_vm.country))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Price Area\")]),_vm._v(\": \"+_vm._s(_vm.pricingAreaName))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Utility\")]),_vm._v(\": \"+_vm._s(_vm.utility))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Product\")]),_vm._v(\": \"+_vm._s(_vm.product))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Company\")]),_vm._v(\": \"+_vm._s(_vm.company))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Contract Name\")]),_vm._v(\": \"+_vm._s(_vm.contractName))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Contract ID\")]),_vm._v(\": \"+_vm._s(_vm.contractId))]),_c('br'),_c('br')]),_c('div',{staticClass:\"column ml-5\"},[_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Watch Period\")]),_vm._v(\": \"+_vm._s(_vm.watchPeriod))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Trigger Type\")]),_vm._v(\": \"+_vm._s(_vm.type))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Trigger Price\")]),_vm._v(\": \"+_vm._s(_vm.triggerPrice)+\" \"+_vm._s(_vm.contractUnits))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Market Price\")]),_vm._v(\": \"+_vm._s(_vm.marketPrice)+\" \"+_vm._s(_vm.contractUnits))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Delta to Trigger\")]),_vm._v(\": \"+_vm._s(_vm.delta)+\" \"+_vm._s(_vm.contractUnits))]),_c('br'),_c('br')])]),_c('ejs-chart',{attrs:{\"id\":\"alertChartContainer\",\"title\":_vm.title,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"titleStyle\":_vm.titleStyle,\"width\":\"700px\",\"height\":\"350px\"}},[_c('e-series-collection',[_c('e-series',{attrs:{\"xName\":\"x\",\"yName\":\"y\",\"name\":\"Market Price\",\"type\":\"MultiColoredLine\",\"pointColorMapping\":\"color\",\"marker\":_vm.marker}})],1)],1)],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StatusAlert.vue?vue&type=template&id=8cc5df1a\"\nimport script from \"./StatusAlert.vue?vue&type=script&lang=js\"\nexport * from \"./StatusAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./StatusAlert.vue?vue&type=style&index=0&id=8cc5df1a&prod&lang=css\"\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","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { removeElement, RectOption, PolygonOption, createTooltip, minMax, getElement } from '../../common/utils/helper';\nimport { textElement } from '../../common/utils/helper';\nimport { PathOption, Rect, measureText, TextOption, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { Zoom } from './zooming';\nimport { zoomComplete, onZooming } from '../../common/model/constants';\n/**\n * Zooming Toolkit created here\n *\n * @private\n */\nvar Toolkit = /** @class */ (function () {\n /** @private */\n function Toolkit(chart) {\n this.iconRectOverFill = 'transparent';\n this.iconRectSelectionFill = 'transparent';\n /** @private */\n this.zoomCompleteEvtCollection = [];\n this.chart = chart;\n this.elementId = chart.element.id;\n this.chart.svgRenderer = new SvgRenderer(this.elementId);\n }\n /**\n * To create the pan button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createPanButton = function (childElement, parentElement) {\n var render = this.chart.svgRenderer;\n var fillColor = this.chart.zoomModule.isPanning ? this.chart.themeStyle.toolkitSelectionColor : this.chart.themeStyle.toolkitFill;\n var direction = 'M5,3h2.3L7.275,5.875h1.4L8.65,3H11L8,0L5,3z M3,11V8.7l2.875,0.025v-1.4L3,7.35V5L0,8L3,';\n direction += '11z M11,13H8.7l0.025-2.875h-1.4L7.35,13H5l3,3L11,13z M13,5v2.3l-2.875-0.025v1.4L13,8.65V11l3-3L13,5z';\n //This is for setting low opacity to PAN Button\n this.elementOpacity = !this.chart.zoomModule.isZoomed && this.chart.zoomSettings.showToolbar ? '0.2' : '1';\n childElement.setAttribute('opacity', this.elementOpacity);\n childElement.id = this.elementId + '_Zooming_Pan';\n childElement.setAttribute('role', 'button');\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('Pan'));\n this.panElements = childElement;\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Pan_1', 'transparent', {}, 1, this.chart.themeStyle.toolkitIconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_Pan_2', fillColor, null, null, 1, null, direction)));\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.pan);\n };\n /**\n * To create the zoom button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createZoomButton = function (childElement, parentElement) {\n var render = this.chart.svgRenderer;\n //This is for selecting initial fill color to ZOOM button\n var fillColor = this.chart.zoomModule.isPanning || (!this.chart.zoomModule.isZoomed &&\n this.chart.zoomSettings.showToolbar) ? this.chart.themeStyle.toolkitFill : this.chart.themeStyle.toolkitSelectionColor;\n this.elementOpacity = !this.chart.zoomModule.isPanning && !this.chart.zoomModule.isZoomed && this.chart.zoomSettings.showToolbar ? '0.2' : '1';\n var rectColor = this.chart.zoomModule.isPanning ? 'transparent' : this.chart.themeStyle.toolkitIconRectSelectionFill;\n var direction = 'M0.001,14.629L1.372,16l4.571-4.571v-0.685l0.228-0.274c1.051,0.868,2.423,1.417,3.885,1.417c3.291,0,';\n direction += '5.943-2.651,5.943-5.943S13.395,0,10.103,0S4.16,2.651,4.16,5.943c0,1.508,0.503,2.834,1.417,3.885l-0.274,0.228H4.571';\n direction = direction + 'L0.001,14.629L0.001,14.629z M5.943,5.943c0-2.285,1.828-4.114,4.114-4.114s4.114,1.828,4.114,';\n childElement.id = this.elementId + '_Zooming_Zoom';\n childElement.setAttribute('role', 'button');\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('Zoom'));\n childElement.setAttribute('opacity', this.elementOpacity);\n this.zoomElements = childElement;\n this.selectedID = this.chart.zoomModule.isPanning ? this.chart.element.id + '_Zooming_Pan_1' : this.elementId + '_Zooming_Zoom_1';\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Zoom_1', rectColor, {}, 1, this.chart.themeStyle.toolkitIconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_Zoom_3', fillColor, null, null, 1, null, direction + '4.114s-1.828,4.114-4.114,4.114S5.943,8.229,5.943,5.943z')));\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.zoom);\n };\n /**\n * To create the ZoomIn button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createZoomInButton = function (childElement, parentElement, chart) {\n var render = this.chart.svgRenderer;\n var fillColor = this.chart.themeStyle.toolkitFill;\n var direction = 'M10.103,0C6.812,0,4.16,2.651,4.16,5.943c0,1.509,0.503,2.834,1.417,3.885l-0.274,0.229H4.571L0,';\n direction += '14.628l0,0L1.372,16l4.571-4.572v-0.685l0.228-0.275c1.052,0.868,2.423,1.417,3.885,1.417c3.291,0,5.943-2.651,';\n direction += '5.943-5.943C16,2.651,13.395,0,10.103,0z M10.058,10.058c-2.286,0-4.114-1.828-4.114-4.114c0-2.286,1.828-4.114,';\n childElement.id = this.elementId + '_Zooming_ZoomIn';\n childElement.setAttribute('role', 'button');\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('ZoomIn'));\n var polygonDirection = '12.749,5.466 10.749,5.466 10.749,3.466 9.749,3.466 9.749,5.466 7.749,5.466 7.749,6.466';\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_ZoomIn_1', 'transparent', {}, 1, this.chart.themeStyle.toolkitIconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_ZoomIn_2', fillColor, null, null, 1, null, direction + '4.114-4.114c2.286,0,4.114,1.828,4.114,4.114C14.172,8.229,12.344,10.058,10.058,10.058z')));\n childElement.appendChild(render.drawPolygon(new PolygonOption(this.elementId + '_Zooming_ZoomIn_3', polygonDirection + ' 9.749,6.466 9.749,8.466 10.749,8.466 10.749,6.466 12.749,6.466', fillColor)));\n this.zoomInElements = childElement;\n //This is for low opacity to ZOOM IN button\n this.elementOpacity = chart.zoomModule.isPanning || (!chart.zoomModule.isZoomed && !chart.zoomSettings.showToolbar && !this.enableZoomButton) ? '0.2' : '1';\n childElement.setAttribute('opacity', this.elementOpacity);\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.zoomIn);\n };\n /**\n * To create the ZoomOut button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createZoomOutButton = function (childElement, parentElement, chart) {\n var render = this.chart.svgRenderer;\n var fillColor = this.chart.themeStyle.toolkitFill;\n var direction = 'M0,14.622L1.378,16l4.533-4.533v-0.711l0.266-0.266c1.022,0.889,2.4,1.422,3.866,';\n direction += '1.422c3.289,0,5.955-2.666,5.955-5.955S13.333,0,10.044,0S4.089,2.667,4.134,5.911c0,1.466,0.533,2.844,';\n direction += '1.422,3.866l-0.266,0.266H4.578L0,14.622L0,14.622z M5.911,5.911c0-2.311,1.822-4.133,4.133-4.133s4.133,1.822,4.133,';\n childElement.id = this.elementId + '_Zooming_ZoomOut';\n childElement.setAttribute('role', 'button');\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('ZoomOut'));\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_ZoomOut_1', 'transparent', {}, 1, this.chart.themeStyle.toolkitIconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_ZoomOut_2', fillColor, null, null, 1, null, direction + '4.133s-1.866,4.133-4.133,4.133S5.911,8.222,5.911,5.911z M12.567,6.466h-5v-1h5V6.466z')));\n this.zoomOutElements = childElement;\n //This is for low opacity of ZOOM OUT button\n this.elementOpacity = chart.zoomModule.isPanning || (!chart.zoomModule.isZoomed && chart.zoomSettings.showToolbar && !this.enableZoomButton) ? '0.2' : '1';\n childElement.setAttribute('opacity', this.elementOpacity);\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.zoomOut);\n };\n /**\n * To create the Reset button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createResetButton = function (childElement, parentElement, chart, isDevice) {\n var render = this.chart.svgRenderer;\n var fillColor = this.chart.themeStyle.toolkitFill;\n var size;\n var direction = 'M12.364,8h-2.182l2.909,3.25L16,8h-2.182c0-3.575-2.618-6.5-5.818-6.5c-1.128,0-2.218,0.366-3.091,';\n direction += '1.016l1.055,1.178C6.581,3.328,7.272,3.125,8,3.125C10.4,3.125,12.363,5.319,12.364,8L12.364,8z M11.091,';\n direction += '13.484l-1.055-1.178C9.419,12.672,8.728,12.875,8,12.875c-2.4,0-4.364-2.194-4.364-4.875h2.182L2.909,4.75L0,8h2.182c0,';\n childElement.id = this.elementId + '_Zooming_Reset';\n childElement.setAttribute('role', 'button');\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('Reset'));\n //This is for low opacity to RESET button\n this.elementOpacity = !chart.zoomModule.isZoomed && chart.zoomSettings.showToolbar ? '0.2' : '1';\n childElement.setAttribute('opacity', this.elementOpacity);\n if (!isDevice) {\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Reset_1', 'transparent', {}, 1, this.chart.themeStyle.toolkitIconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_Reset_2', fillColor, null, null, 1, null, direction + '3.575,2.618,6.5,5.818,6.5C9.128,14.5,10.219,14.134,11.091,13.484L11.091,13.484z')));\n }\n else {\n size = measureText(this.chart.getLocalizedLabel('ResetZoom'), { size: '12px' }, { size: '12px', fontStyle: 'Normal', fontWeight: '400', fontFamily: 'Segoe UI' });\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Reset_1', 'transparent', {}, 1, new Rect(0, 0, size.width, size.height))));\n textElement(chart.renderer, new TextOption(this.elementId + '_Zooming_Reset_2', 0 + size.width / 2, 0 + size.height * 3 / 4, 'middle', this.chart.getLocalizedLabel('ResetZoom'), 'rotate(0,' + (0) + ',' + (0) + ')', 'auto'), { size: '12px' }, this.chart.theme === 'Material3Dark' ? 'White' : 'black', childElement, null, null, null, null, null, null, null, null, chart.enableCanvas, null, { size: '12px', fontStyle: 'Normal', fontWeight: '400', fontFamily: 'Segoe UI' });\n }\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.reset);\n };\n /**\n * To bind events.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.wireEvents = function (element, process) {\n EventHandler.add(element, 'mousedown touchstart', process, this);\n EventHandler.add(element, 'mouseover', this.showTooltip, this);\n EventHandler.add(element, 'mouseout', this.removeTooltip, this);\n };\n /**\n * To show tooltip.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.showTooltip = function (event) {\n var text = event.currentTarget.id.split('_Zooming_')[1];\n var left = (event.pageX - (measureText(text, { size: '10px' }, { size: '10px', fontStyle: 'Normal', fontWeight: '400', fontFamily: 'Segoe UI' }).width + 5));\n var rect = getElement(event.currentTarget.id + '_1');\n var icon2 = getElement(event.currentTarget.id + '_2');\n var icon3 = getElement(event.currentTarget.id + '_3');\n if (event.currentTarget.getAttribute('opacity') === '1') {\n event.currentTarget.setAttribute('cursor', 'pointer');\n }\n else {\n event.currentTarget.setAttribute('cursor', 'auto');\n }\n if (rect) {\n this.hoveredID = rect.id;\n rect.setAttribute('fill', this.chart.themeStyle.toolkitIconRectOverFill);\n }\n if (icon2) {\n icon2.setAttribute('fill', this.chart.themeStyle.toolkitSelectionColor);\n }\n if (icon3) {\n icon3.setAttribute('fill', this.chart.themeStyle.toolkitSelectionColor);\n }\n if (!this.chart.isTouch) {\n createTooltip('EJ2_Chart_ZoomTip', this.chart.getLocalizedLabel(text), (event.pageY + 10), left, '10px');\n }\n };\n /** @private */\n /* eslint-disable */\n Toolkit.prototype.removeTooltip = function () {\n if (this.hoveredID && getElement(this.hoveredID)) {\n var rectColor = this.chart.zoomModule.isPanning ? (this.hoveredID.indexOf('_Pan_') > -1) ? this.chart.themeStyle.toolkitIconRectSelectionFill : 'transparent' : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.chart.themeStyle.toolkitIconRectSelectionFill : 'transparent';\n getElement(this.hoveredID).setAttribute('fill', rectColor);\n }\n var icon2 = this.hoveredID ? getElement(this.hoveredID.replace('_1', '_2')) : null;\n var icon3 = this.hoveredID ? getElement(this.hoveredID.replace('_1', '_3')) : null;\n if (icon2) {\n var iconColor = this.chart.zoomModule.isPanning ? (this.hoveredID.indexOf('_Pan_') > -1) ? this.chart.themeStyle.toolkitSelectionColor : this.chart.themeStyle.toolkitFill : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.chart.themeStyle.toolkitSelectionColor : this.chart.themeStyle.toolkitFill;\n icon2.setAttribute('fill', iconColor);\n }\n if (icon3) {\n //This is used for change color while hover on ZOOM button\n var iconColor = this.chart.zoomModule.isPanning || (!this.chart.isZoomed && this.chart.zoomSettings.showToolbar) ? this.chart.themeStyle.toolkitFill : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.chart.themeStyle.toolkitSelectionColor : this.chart.themeStyle.toolkitFill;\n icon3.setAttribute('fill', iconColor);\n }\n removeElement('EJ2_Chart_ZoomTip');\n };\n // Toolkit events function calculation here.\n /** @private */\n Toolkit.prototype.reset = function (event) {\n var _this = this;\n if (!this.chart.zoomModule.isZoomed) {\n return false;\n }\n var chart = this.chart;\n this.enableZoomButton = false;\n if (!chart.zoomModule.isDevice) {\n remove(chart.zoomModule.toolkitElements);\n }\n else if (event.type == 'touchstart') {\n event.stopPropagation();\n }\n var argsData;\n this.removeTooltip();\n chart.svgObject.setAttribute('cursor', 'auto');\n var zoomingEventArgs;\n var zoomedAxisCollection = [];\n this.zoomCompleteEvtCollection = [];\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: 1, currentZoomPosition: 0,\n previousVisibleRange: axis.visibleRange, currentVisibleRange: null\n };\n axis.zoomFactor = 1;\n axis.zoomPosition = 0;\n if (axis.zoomingScrollBar) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n if (chart.zoomModule.isDevice && !this.chart.isBlazor) {\n chart.trigger(zoomComplete, argsData);\n }\n }\n zoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!zoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, zoomingEventArgs, function () {\n _this.setDefferedZoom(chart);\n });\n return false;\n }\n else {\n return (this.setDefferedZoom(chart));\n }\n };\n Toolkit.prototype.setDefferedZoom = function (chart) {\n chart.disableTrackTooltip = false;\n chart.zoomModule.isZoomed = chart.zoomModule.isPanning = chart.isChartDrag = chart.delayRedraw = false;\n chart.zoomModule.touchMoveList = chart.zoomModule.touchStartList = [];\n chart.zoomModule.pinchTarget = null;\n chart.removeSvg();\n chart.refreshAxis();\n chart.refreshBound();\n this.elementOpacity = '1';\n return false;\n };\n Toolkit.prototype.zoomIn = function (e) {\n this.zoomInOutCalculation(1, this.chart, this.chart.axisCollections, this.chart.zoomSettings.mode);\n return false;\n };\n Toolkit.prototype.zoomOut = function (e) {\n this.enableZoomButton = false;\n this.zoomInOutCalculation(-1, this.chart, this.chart.axisCollections, this.chart.zoomSettings.mode);\n return false;\n };\n Toolkit.prototype.zoom = function (e) {\n this.chart.zoomModule.isPanning = false;\n var zoomModule = this.chart.zoomModule;\n this.elementOpacity = '1';\n this.chart.svgObject.setAttribute('cursor', 'auto');\n this.zoomInElements.setAttribute('opacity', this.elementOpacity);\n this.elementOpacity = (!this.chart.zoomModule.isZoomed && this.chart.zoomSettings.showToolbar) ? '0.2' : '1';\n this.zoomOutElements.setAttribute('opacity', this.elementOpacity);\n this.applySelection(this.zoomElements.childNodes, this.chart.themeStyle.toolkitSelectionColor);\n this.applySelection(this.panElements.childNodes, '#737373');\n if (getElement(this.selectedID)) {\n getElement(this.selectedID).setAttribute('fill', 'transparent');\n }\n this.selectedID = this.chart.element.id + '_Zooming_Zoom_1';\n getElement(this.selectedID).setAttribute('fill', this.chart.themeStyle.toolkitIconRectSelectionFill);\n return false;\n };\n /** @private */\n Toolkit.prototype.pan = function () {\n if (!this.chart.zoomModule.isZoomed) {\n return false;\n }\n var element;\n this.chart.zoomModule.isPanning = true;\n this.chart.svgObject.setAttribute('cursor', 'pointer');\n this.elementOpacity = '0.2';\n element = this.zoomInElements ? this.zoomInElements.setAttribute('opacity', this.elementOpacity) : null;\n element = this.zoomOutElements ? this.zoomOutElements.setAttribute('opacity', this.elementOpacity) : null;\n element = this.panElements ? this.applySelection(this.panElements.childNodes, this.chart.themeStyle.toolkitSelectionColor) : null;\n element = this.zoomElements ? this.applySelection(this.zoomElements.childNodes, '#737373') : null;\n if (getElement(this.selectedID)) {\n getElement(this.selectedID).setAttribute('fill', 'transparent');\n }\n this.selectedID = this.chart.element.id + '_Zooming_Pan_1';\n getElement(this.selectedID).setAttribute('fill', this.chart.themeStyle.toolkitIconRectSelectionFill);\n return false;\n };\n Toolkit.prototype.zoomInOutCalculation = function (scale, chart, axes, mode) {\n var _this = this;\n if (chart.zoomSettings.showToolbar) {\n this.elementOpacity = this.zoomInElements.getAttribute('opacity');\n }\n if (!chart.zoomModule.isPanning && this.elementOpacity !== '0.2') {\n if ((chart.zoomSettings.showToolbar && !chart.isZoomed)) {\n chart.zoomModule.isZoomed = true;\n }\n var zoomFactor = void 0;\n var zoomPosition = void 0;\n var cumulative = void 0;\n chart.disableTrackTooltip = true;\n chart.delayRedraw = true;\n var argsData = void 0;\n this.zoomCompleteEvtCollection = [];\n var zoomedAxisCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: axis.zoomFactor, currentZoomPosition: axis.zoomPosition,\n previousVisibleRange: axis.visibleRange, currentVisibleRange: null\n };\n if ((axis.orientation === 'Horizontal' && mode !== 'Y') ||\n (axis.orientation === 'Vertical')) {\n cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * scale), 1);\n zoomFactor = (cumulative === 1) ? 1 : minMax(1 / cumulative, 0, 1);\n zoomPosition = (cumulative === 1) ? 0 : axis.zoomPosition + ((axis.zoomFactor - zoomFactor) * 0.5);\n if (axis.zoomPosition !== zoomPosition || axis.zoomFactor !== zoomFactor) {\n zoomFactor = (zoomPosition + zoomFactor) > 1 ? (1 - zoomPosition) : zoomFactor;\n }\n argsData.currentZoomFactor = zoomFactor;\n argsData.currentZoomPosition = zoomPosition;\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n }\n var zoomingEventArgs_1 = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n this.chart.trigger(onZooming, zoomingEventArgs_1, function () {\n if (zoomingEventArgs_1.cancel) {\n var zoom = new Zoom(chart);\n zoom.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n });\n }\n };\n Toolkit.prototype.applySelection = function (elements, color) {\n for (var i = 1, length_1 = elements.length; i < length_1; i++) {\n elements[i].setAttribute('fill', color);\n }\n };\n return Toolkit;\n}());\nexport { Toolkit };\n","import { EventHandler, Browser, createElement } from '@syncfusion/ej2-base';\nimport { getRectLocation, minMax, getElement, ChartLocation, RectOption } from '../../common/utils/helper';\nimport { Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { Toolkit } from './zooming-toolkit';\nimport { zoomComplete, onZooming } from '../../common/model/constants';\nimport { withInBounds } from '../../common/utils/helper';\n/**\n * `Zooming` module handles the zooming for chart.\n */\nvar Zoom = /** @class */ (function () {\n /**\n * Constructor for Zooming module.\n *\n * @private\n */\n function Zoom(chart) {\n this.zoomCompleteEvtCollection = [];\n this.chart = chart;\n this.isPointer = Browser.isPointer;\n this.browserName = Browser.info.name;\n this.wheelEvent = this.browserName === 'mozilla' ? (this.isPointer ? 'mousewheel' : 'DOMMouseScroll') : 'mousewheel';\n this.cancelEvent = this.isPointer ? 'pointerleave' : 'mouseleave';\n this.addEventListener();\n this.isDevice = Browser.isDevice;\n var zooming = chart.zoomSettings;\n this.toolkit = new Toolkit(chart);\n this.zooming = zooming;\n this.elementId = chart.element.id;\n this.zoomingRect = new Rect(0, 0, 0, 0);\n this.zoomAxes = [];\n this.zoomkitOpacity = 1;\n this.isIOS = Browser.isIos || Browser.isIos7;\n this.isZoomed = this.performedUI = this.zooming.enablePan ||\n ((this.chart.primaryXAxis.zoomFactor < 1 && this.chart.primaryXAxis.zoomPosition > 0) ||\n (this.chart.primaryYAxis.zoomFactor < 1 && this.chart.primaryYAxis.zoomPosition > 0) || this.isAxisZoomed(this.chart.axes));\n if (zooming.enableScrollbar) {\n chart.scrollElement = createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n }\n /**\n * Function that handles the Rectangular zooming.\n *\n * @returns {void}\n */\n Zoom.prototype.renderZooming = function (e, chart, isTouch) {\n this.calculateZoomAxesRange(chart);\n if (this.zooming.enableSelectionZooming && (!isTouch\n || (chart.isDoubleTap && this.touchStartList.length === 1)) && (!this.isPanning || chart.isDoubleTap)) {\n this.isPanning = this.isDevice ? true : this.isPanning;\n this.performedUI = true;\n this.drawZoomingRectangle(chart);\n }\n else if (this.isPanning && chart.isChartDrag) {\n if (!isTouch || (isTouch && this.touchStartList.length === 1)) {\n this.pinchTarget = isTouch ? e.target : null;\n this.doPan(chart, chart.axisCollections);\n }\n }\n };\n // Zooming rectangle drawn here\n Zoom.prototype.drawZoomingRectangle = function (chart) {\n var areaBounds = chart.chartAxisLayoutPanel.seriesClipRect;\n var startLocation = new ChartLocation(chart.previousMouseMoveX, chart.previousMouseMoveY);\n var endLocation = new ChartLocation(chart.mouseX, chart.mouseY);\n var rect = this.zoomingRect = getRectLocation(startLocation, endLocation, areaBounds);\n if (rect.width > 0 && rect.height > 0) {\n this.isZoomed = true;\n chart.disableTrackTooltip = true;\n chart.svgObject.setAttribute('cursor', 'crosshair');\n if (this.zooming.mode === 'Y') {\n rect.width = areaBounds.width;\n rect.x = areaBounds.x;\n }\n var svg = chart.enableCanvas ? document.getElementById(this.elementId + '_tooltip_svg') : chart.svgObject;\n svg.appendChild(chart.svgRenderer.drawRectangle(new RectOption(this.elementId + '_ZoomArea', chart.themeStyle.selectionRectFill, { color: chart.themeStyle.selectionRectStroke, width: 1 }, 1, rect, 0, 0, '', '3')));\n }\n };\n // Panning performed here\n Zoom.prototype.doPan = function (chart, axes, xDifference, yDifference) {\n var _this = this;\n if (xDifference === void 0) { xDifference = 0; }\n if (yDifference === void 0) { yDifference = 0; }\n if (chart.startMove && chart.crosshair.enable) {\n return null;\n }\n var currentScale;\n var offset;\n this.isZoomed = true;\n this.offset = !chart.delayRedraw ? chart.chartAxisLayoutPanel.seriesClipRect : this.offset;\n chart.delayRedraw = true;\n this.zoomCompleteEvtCollection = [];\n chart.disableTrackTooltip = true;\n var argsData;\n var zoomedAxisCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: axis.zoomFactor,\n currentZoomPosition: axis.zoomPosition, previousVisibleRange: axis.visibleRange,\n currentVisibleRange: null\n };\n currentScale = Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1);\n if (axis.orientation === 'Horizontal') {\n offset = (xDifference !== 0 ? xDifference : (chart.previousMouseMoveX - chart.mouseX)) / axis.rect.width / currentScale;\n argsData.currentZoomPosition = minMax(axis.zoomPosition + offset, 0, (1 - axis.zoomFactor));\n }\n else {\n offset = (yDifference !== 0 ? yDifference : (chart.previousMouseMoveY - chart.mouseY)) / axis.rect.height / currentScale;\n argsData.currentZoomPosition = minMax(axis.zoomPosition - offset, 0, (1 - axis.zoomFactor));\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n var zoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!zoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, zoomingEventArgs, function () {\n if (zoomingEventArgs.cancel) {\n _this.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n else {\n _this.performDefferedZoom(chart);\n }\n });\n }\n else {\n this.chart.trigger(onZooming, zoomingEventArgs, function () {\n if (zoomingEventArgs.cancel) {\n _this.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n else {\n _this.performDefferedZoom(chart);\n _this.redrawOnZooming(chart, false);\n }\n });\n }\n };\n Zoom.prototype.performDefferedZoom = function (chart) {\n var translateX;\n var translateY;\n if (this.zooming.enableDeferredZooming) {\n translateX = chart.mouseX - chart.mouseDownX;\n translateY = chart.mouseY - chart.mouseDownY;\n switch (this.zooming.mode) {\n case 'Y':\n translateX = 0;\n break;\n }\n this.setTransform(translateX, translateY, null, null, chart, false);\n this.refreshAxis(chart.chartAxisLayoutPanel, chart, chart.axisCollections);\n if (chart.enableCanvas) {\n this.performZoomRedraw(chart);\n }\n }\n else {\n this.performZoomRedraw(chart);\n }\n chart.previousMouseMoveX = chart.mouseX;\n chart.previousMouseMoveY = chart.mouseY;\n };\n /**\n * Redraw the chart on zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.performZoomRedraw = function (chart) {\n var rect = this.zoomingRect;\n chart.animateSeries = false;\n if (this.isZoomed) {\n if (rect.width > 0 && rect.height > 0) {\n this.performedUI = true;\n chart.svgObject.setAttribute('cursor', 'auto');\n this.doZoom(chart, chart.axisCollections, chart.chartAxisLayoutPanel.seriesClipRect);\n chart.isDoubleTap = false;\n }\n else if (chart.disableTrackTooltip) {\n chart.disableTrackTooltip = false;\n chart.delayRedraw = false;\n chart.enableCanvas ? chart.createChartSvg() : chart.removeSvg();\n chart.refreshAxis();\n chart.refreshBound();\n }\n }\n };\n Zoom.prototype.refreshAxis = function (layout, chart, axes) {\n var mode = chart.zoomSettings.mode;\n layout.measureAxis(new Rect(chart.initialClipRect.x, chart.initialClipRect.y, chart.initialClipRect.width, chart.initialClipRect.height));\n axes.map(function (axis, index) {\n if (axis.orientation === 'Horizontal' && mode !== 'Y') {\n layout.drawXAxisLabels(axis, index, null, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n if (axis.orientation === 'Vertical') {\n layout.drawYAxisLabels(axis, index, null, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n });\n };\n // Rectangular zoom calculated here performed here\n Zoom.prototype.doZoom = function (chart, axes, bounds) {\n var _this = this;\n var zoomRect = this.zoomingRect;\n var mode = this.zooming.mode;\n var argsData;\n this.isPanning = chart.zoomSettings.enablePan || this.isPanning;\n var zoomedAxisCollections = [];\n this.zoomCompleteEvtCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis,\n previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition,\n currentZoomFactor: axis.zoomFactor,\n currentZoomPosition: axis.zoomPosition,\n previousVisibleRange: axis.visibleRange, currentVisibleRange: null\n };\n if (axis.orientation === 'Horizontal') {\n if (mode !== 'Y') {\n argsData.currentZoomPosition += Math.abs((zoomRect.x - bounds.x) / (bounds.width)) * axis.zoomFactor;\n argsData.currentZoomFactor *= (zoomRect.width / bounds.width);\n }\n }\n else {\n argsData.currentZoomPosition += (1 - Math.abs((zoomRect.height + (zoomRect.y - bounds.y)) / (bounds.height)))\n * axis.zoomFactor;\n argsData.currentZoomFactor *= (zoomRect.height / bounds.height);\n }\n if (parseFloat(argsData.currentZoomFactor.toFixed(3)) <= 0.001) {\n argsData.currentZoomFactor = argsData.previousZoomFactor;\n argsData.currentZoomPosition = argsData.previousZoomPosition;\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollections.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n var onZoomingEventArg = { cancel: false, axisCollection: zoomedAxisCollections, name: onZooming };\n if (!onZoomingEventArg.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, onZoomingEventArg, function () {\n if (onZoomingEventArg.cancel) {\n _this.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n else {\n _this.zoomingRect = new Rect(0, 0, 0, 0);\n _this.performZoomRedraw(chart);\n }\n });\n }\n else {\n this.chart.trigger(onZooming, onZoomingEventArg, function () {\n if (onZoomingEventArg.cancel) {\n _this.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n else {\n _this.zoomingRect = new Rect(0, 0, 0, 0);\n _this.redrawOnZooming(chart);\n }\n });\n }\n };\n /** It is used to redraw the chart and trigger zoomComplete event */\n Zoom.prototype.redrawOnZooming = function (chart, isRedraw, isMouseUp) {\n if (isRedraw === void 0) { isRedraw = true; }\n if (isMouseUp === void 0) { isMouseUp = false; }\n var zoomCompleteCollection = isMouseUp ? this.toolkit.zoomCompleteEvtCollection :\n this.zoomCompleteEvtCollection;\n if (isRedraw) {\n this.performZoomRedraw(chart);\n }\n var argsData;\n for (var i = 0; i < zoomCompleteCollection.length; i++) {\n if (!zoomCompleteCollection[i].cancel) {\n argsData = {\n cancel: false, name: zoomComplete,\n axis: chart.axisCollections[i],\n previousZoomFactor: zoomCompleteCollection[i].previousZoomFactor,\n previousZoomPosition: zoomCompleteCollection[i].previousZoomPosition,\n currentZoomFactor: chart.axisCollections[i].zoomFactor,\n currentZoomPosition: chart.axisCollections[i].zoomPosition,\n currentVisibleRange: chart.axisCollections[i].visibleRange,\n previousVisibleRange: zoomCompleteCollection[i].previousVisibleRange\n };\n chart.trigger(zoomComplete, argsData);\n }\n }\n };\n /**\n * Function that handles the Mouse wheel zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.performMouseWheelZooming = function (e, mouseX, mouseY, chart, axes) {\n var _this = this;\n var direction = (this.browserName === 'mozilla' && !this.isPointer) ?\n -(e.detail) / 3 > 0 ? 1 : -1 : (e['wheelDelta'] > 0 ? 1 : -1);\n var mode = this.zooming.mode;\n var origin = 0.5;\n var cumulative;\n var zoomFactor;\n var zoomPosition;\n this.isZoomed = true;\n this.calculateZoomAxesRange(chart);\n chart.disableTrackTooltip = true;\n this.performedUI = true;\n this.isPanning = chart.zoomSettings.enablePan || this.isPanning;\n this.zoomCompleteEvtCollection = [];\n var argsData;\n var zoomedAxisCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition,\n currentZoomFactor: axis.zoomFactor,\n currentZoomPosition: axis.zoomPosition, currentVisibleRange: null,\n previousVisibleRange: axis.visibleRange\n };\n if ((axis.orientation === 'Vertical') ||\n (axis.orientation === 'Horizontal' && mode !== 'Y')) {\n cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * direction), 1);\n cumulative = (cumulative > 50000000000) ? 50000000000 : cumulative;\n if (cumulative >= 1) {\n origin = axis.orientation === 'Horizontal' ? mouseX / axis.rect.width : 1 - (mouseY / axis.rect.height);\n origin = origin > 1 ? 1 : origin < 0 ? 0 : origin;\n zoomFactor = (cumulative === 1) ? 1 : minMax((direction > 0 ? 0.9 : 1.1) / cumulative, 0, 1);\n zoomPosition = (cumulative === 1) ? 0 : axis.zoomPosition + ((axis.zoomFactor - zoomFactor) * origin);\n if (axis.zoomPosition !== zoomPosition || axis.zoomFactor !== zoomFactor) {\n zoomFactor = (zoomPosition + zoomFactor) > 1 ? (1 - zoomPosition) : zoomFactor;\n }\n argsData.currentZoomFactor = zoomFactor;\n argsData.currentZoomPosition = zoomPosition;\n }\n if (argsData.currentZoomFactor === argsData.previousZoomFactor && argsData.currentZoomPosition === argsData.previousZoomPosition) {\n chart.disableTrackTooltip = false;\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n var onZoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!onZoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, onZoomingEventArgs, function () {\n if (onZoomingEventArgs.cancel) {\n _this.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n else {\n _this.performZoomRedraw(chart);\n }\n });\n }\n else {\n this.chart.trigger(onZooming, onZoomingEventArgs, function () {\n if (onZoomingEventArgs.cancel) {\n _this.zoomCancel(axes, _this.zoomCompleteEvtCollection);\n }\n else {\n _this.redrawOnZooming(chart);\n }\n });\n }\n };\n /**\n * Function that handles the Pinch zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.performPinchZooming = function (e, chart) {\n if ((this.zoomingRect.width > 0 && this.zoomingRect.height > 0) || (chart.startMove && chart.crosshair.enable)) {\n return false;\n }\n this.calculateZoomAxesRange(chart);\n this.isZoomed = true;\n this.isPanning = true;\n this.performedUI = true;\n this.offset = !chart.delayRedraw ? chart.chartAxisLayoutPanel.seriesClipRect : this.offset;\n chart.delayRedraw = true;\n chart.disableTrackTooltip = true;\n var elementOffset = chart.element.getBoundingClientRect();\n var touchDown = this.touchStartList;\n var touchMove = this.touchMoveList;\n var touch0StartX = touchDown[0].pageX - elementOffset.left;\n var touch0StartY = touchDown[0].pageY - elementOffset.top;\n var touch0EndX = touchMove[0].pageX - elementOffset.left;\n var touch0EndY = touchMove[0].pageY - elementOffset.top;\n var touch1StartX = touchDown[1].pageX - elementOffset.left;\n var touch1StartY = touchDown[1].pageY - elementOffset.top;\n var touch1EndX = touchMove[1].pageX - elementOffset.left;\n var touch1EndY = touchMove[1].pageY - elementOffset.top;\n var scaleX = Math.abs(touch0EndX - touch1EndX) / Math.abs(touch0StartX - touch1StartX);\n var scaleY = Math.abs(touch0EndY - touch1EndY) / Math.abs(touch0StartY - touch1StartY);\n var clipX = ((this.offset.x - touch0EndX) / scaleX) + touch0StartX;\n var clipY = ((this.offset.y - touch0EndY) / scaleY) + touch0StartY;\n var pinchRect = new Rect(clipX, clipY, this.offset.width / scaleX, this.offset.height / scaleY);\n var translateXValue = (touch0EndX - (scaleX * touch0StartX));\n var translateYValue = (touch0EndY - (scaleY * touch0StartY));\n if (!isNaN(scaleX - scaleX) && !isNaN(scaleY - scaleY)) {\n switch (this.zooming.mode) {\n case 'XY':\n case 'X':\n this.setTransform(translateXValue, translateYValue, scaleX, scaleY, chart, true);\n break;\n case 'Y':\n this.setTransform(0, translateYValue, 1, scaleY, chart, true);\n break;\n }\n }\n if (!this.calculatePinchZoomFactor(chart, pinchRect)) {\n this.refreshAxis(chart.chartAxisLayoutPanel, chart, chart.axisCollections);\n this.redrawOnZooming(chart, false);\n }\n return true;\n };\n Zoom.prototype.calculatePinchZoomFactor = function (chart, pinchRect) {\n var mode = this.zooming.mode;\n var selectionMin;\n var selectionMax;\n var rangeMin;\n var rangeMax;\n var value;\n var axisTrans;\n var argsData;\n var currentZF;\n var currentZP;\n var zoomedAxisCollection = [];\n this.zoomCompleteEvtCollection = [];\n for (var index = 0; index < chart.axisCollections.length; index++) {\n var axis = chart.axisCollections[index];\n if ((axis.orientation === 'Horizontal' && mode !== 'Y') ||\n (axis.orientation === 'Vertical')) {\n currentZF = axis.zoomFactor;\n currentZP = axis.zoomPosition;\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: currentZF,\n currentZoomPosition: currentZP, previousVisibleRange: axis.visibleRange,\n currentVisibleRange: null\n };\n if (axis.orientation === 'Horizontal') {\n value = pinchRect.x - this.offset.x;\n axisTrans = axis.rect.width / this.zoomAxes[index].delta;\n rangeMin = value / axisTrans + this.zoomAxes[index].min;\n value = pinchRect.x + pinchRect.width - this.offset.x;\n rangeMax = value / axisTrans + this.zoomAxes[index].min;\n }\n else {\n value = pinchRect.y - this.offset.y;\n axisTrans = axis.rect.height / this.zoomAxes[index].delta;\n rangeMin = (value * -1 + axis.rect.height) / axisTrans + this.zoomAxes[index].min;\n value = pinchRect.y + pinchRect.height - this.offset.y;\n rangeMax = (value * -1 + axis.rect.height) / axisTrans + this.zoomAxes[index].min;\n }\n selectionMin = Math.min(rangeMin, rangeMax);\n selectionMax = Math.max(rangeMin, rangeMax);\n currentZP = (selectionMin - this.zoomAxes[index].actualMin) / this.zoomAxes[index].actualDelta;\n currentZF = (selectionMax - selectionMin) / this.zoomAxes[index].actualDelta;\n argsData.currentZoomPosition = currentZP < 0 ? 0 : currentZP;\n argsData.currentZoomFactor = currentZF > 1 ? 1 : (currentZF < 0.03) ? 0.03 : currentZF;\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n }\n var onZoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!onZoomingEventArgs.cancel) {\n this.chart.trigger(onZooming, onZoomingEventArgs);\n if (onZoomingEventArgs.cancel) {\n this.zoomCancel(chart.axisCollections, this.zoomCompleteEvtCollection);\n return true;\n }\n }\n return false;\n };\n // Series transformation style applied here.\n Zoom.prototype.setTransform = function (transX, transY, scaleX, scaleY, chart, isPinch) {\n if (!chart.enableCanvas) {\n chart.seriesElements.setAttribute('clip-path', 'url(#' + this.elementId + '_ChartAreaClipRect_)');\n }\n if (chart.indicatorElements) {\n chart.indicatorElements.setAttribute('clip-path', 'url(#' + this.elementId + '_ChartAreaClipRect_)');\n }\n var translate;\n var xAxisLoc;\n var yAxisLoc;\n var element;\n if (transX !== null && transY !== null) {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n xAxisLoc = chart.requireInvertedAxis ? value.yAxis.rect.x : value.xAxis.rect.x;\n yAxisLoc = chart.requireInvertedAxis ? value.xAxis.rect.y : value.yAxis.rect.y;\n translate = 'translate(' + (transX + (isPinch ? (scaleX * xAxisLoc) : xAxisLoc)) +\n ',' + (transY + (isPinch ? (scaleY * yAxisLoc) : yAxisLoc)) + ')';\n translate = (scaleX || scaleY) ? translate + ' scale(' + scaleX + ' ' + scaleY + ')' : translate;\n if (value.visible) {\n if (value.category === 'Indicator') {\n value.seriesElement.parentNode.setAttribute('transform', translate);\n }\n else {\n if (!chart.enableCanvas) {\n value.seriesElement.setAttribute('transform', translate);\n }\n }\n element = getElement(chart.element.id + '_Series_' + value.index + '_DataLabelCollections');\n if (value.errorBarElement) {\n value.errorBarElement.setAttribute('transform', translate);\n }\n if (value.symbolElement) {\n value.symbolElement.setAttribute('transform', translate);\n }\n if (value.textElement) {\n value.textElement.setAttribute('visibility', 'hidden');\n value.shapeElement.setAttribute('visibility', 'hidden');\n }\n if (element) {\n element.style.visibility = 'hidden';\n }\n }\n }\n }\n };\n Zoom.prototype.calculateZoomAxesRange = function (chart) {\n var range;\n var axisRange;\n for (var index = 0; index < chart.axisCollections.length; index++) {\n var axis = chart.axisCollections[index];\n axisRange = axis.visibleRange;\n if (this.zoomAxes[index]) {\n if (!chart.delayRedraw) {\n this.zoomAxes[index].min = axisRange.min;\n this.zoomAxes[index].delta = axisRange.delta;\n }\n }\n else {\n range = {\n actualMin: axis.actualRange.min,\n actualDelta: axis.actualRange.delta,\n min: axisRange.min,\n delta: axisRange.delta\n };\n this.zoomAxes[index] = range;\n }\n }\n };\n // Zooming Toolkit created here\n Zoom.prototype.showZoomingToolkit = function (chart) {\n var toolboxItems = this.zooming.toolbarItems;\n var areaBounds = chart.chartAxisLayoutPanel.seriesClipRect;\n var spacing = 10;\n var render = chart.svgRenderer;\n var length = this.isDevice ? 1 : toolboxItems.length;\n var iconSize = this.isDevice ? measureText('Reset Zoom', { size: '12px' }, { size: '12px', fontStyle: 'Normal', fontWeight: '400', fontFamily: 'Segoe UI' }).width : 16;\n var height = this.isDevice ? measureText('Reset Zoom', { size: '12px' }, { size: '12px', fontStyle: 'Normal', fontWeight: '400', fontFamily: 'Segoe UI' }).height : 22;\n var width = (length * iconSize) + ((length + 1) * spacing) + ((length - 1) * spacing);\n var transX = areaBounds.x + areaBounds.width - width - spacing;\n var transY = (areaBounds.y + spacing);\n var xPosition = spacing;\n var toolkit = this.toolkit;\n var element;\n var shadowElement = '';\n shadowElement += '';\n shadowElement += '';\n if (length === 0 || getElement(this.elementId + '_Zooming_KitCollection')) {\n return false;\n }\n var defElement = render.createDefs();\n toolboxItems = this.isDevice ? ['Reset'] : toolboxItems;\n defElement.innerHTML = shadowElement;\n this.toolkitElements = render.createGroup({\n id: this.elementId + '_Zooming_KitCollection',\n transform: 'translate(' + transX + ',' + transY + ')'\n });\n this.toolkitElements.appendChild(defElement);\n var zoomFillColor = this.chart.theme === 'Tailwind' ? '#F3F4F6' : this.chart.theme === 'Fluent' ? '#F3F2F1' :\n (this.chart.theme === 'Material3' ? '#FFFFFF' : this.chart.theme === 'Material3Dark' ? '#1C1B1F' : '#fafafa');\n this.toolkitElements.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Rect', zoomFillColor, { color: 'transparent', width: 1 }, 1, new Rect(0, 0, width, (height + (spacing * 2))), 4, 4)));\n var outerElement = render.drawRectangle(new RectOption(this.elementId + '_Zooming_Rect', zoomFillColor, { color: 'transparent', width: 1 }, 0.1, new Rect(0, 0, width, (height + (spacing * 2))), 4, 4));\n if (this.chart.theme === 'Tailwind' || this.chart.theme === 'TailwindDark') {\n outerElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else if (this.chart.theme === 'Material3' || this.chart.theme === 'Material3Dark') {\n outerElement.setAttribute('filter', 'drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.15)) drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3))');\n outerElement.setAttribute('fill', this.chart.theme === 'Material3' ? '#FFFFFF' : '#1C1B1F');\n outerElement.setAttribute('rx', '4px');\n outerElement.setAttribute('ry', '4px');\n outerElement.setAttribute('opacity', '1');\n }\n else {\n outerElement.setAttribute('filter', 'url(#chart_shadow)');\n }\n this.toolkitElements.appendChild(outerElement);\n var currentItem;\n var panIcon = false;\n for (var i = 1; i <= length; i++) {\n currentItem = toolboxItems[i - 1];\n element = render.createGroup({\n transform: 'translate(' + xPosition + ',' + (this.isDevice ? spacing : (spacing + 3)) + ')'\n });\n // for desktop toolkit hight is 32 and top padding is 8 icon size 16\n switch (currentItem) {\n case 'Pan':\n toolkit.createPanButton(element, this.toolkitElements);\n panIcon = true;\n break;\n case 'Zoom':\n toolkit.createZoomButton(element, this.toolkitElements);\n break;\n case 'ZoomIn':\n toolkit.createZoomInButton(element, this.toolkitElements, chart);\n break;\n case 'ZoomOut':\n toolkit.createZoomOutButton(element, this.toolkitElements, chart);\n break;\n case 'Reset':\n toolkit.createResetButton(element, this.toolkitElements, chart, this.isDevice);\n break;\n }\n xPosition += iconSize + (spacing * 2);\n }\n this.toolkitElements.setAttribute('opacity', this.isDevice ? '1' : '' + this.zoomkitOpacity);\n this.toolkitElements.setAttribute('cursor', 'auto');\n if (chart.enableCanvas) {\n var zoomDiv = document.createElement('div');\n zoomDiv.id = chart.element.id + '_zoom';\n zoomDiv.style.cssText = 'position:absolute; z-index:1';\n var zoomheight = chart.availableSize.height / 2;\n var svg = chart.svgRenderer.createSvg({\n id: chart.element.id + '_zoomkit_svg',\n width: chart.availableSize.width,\n height: zoomheight\n });\n svg.style.position = 'absolute';\n svg.appendChild(this.toolkitElements);\n zoomDiv.appendChild(svg);\n document.getElementById(this.elementId + '_Secondary_Element').appendChild(zoomDiv);\n }\n else {\n chart.svgObject.appendChild(this.toolkitElements);\n }\n if (!this.isDevice) {\n EventHandler.add(this.toolkitElements, 'mousemove touchstart', this.zoomToolkitMove, this);\n EventHandler.add(this.toolkitElements, 'mouseleave touchend', this.zoomToolkitLeave, this);\n if (this.isPanning && panIcon) {\n toolkit.pan();\n }\n }\n return true;\n };\n /**\n * To the show the zooming toolkit.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.applyZoomToolkit = function (chart, axes) {\n var showToolkit = this.isAxisZoomed(axes);\n if (showToolkit) {\n this.showZoomingToolkit(chart);\n this.isZoomed = true;\n }\n else if (chart.zoomSettings.showToolbar) {\n this.isZoomed = showToolkit;\n this.showZoomingToolkit(chart);\n }\n else {\n this.toolkit.removeTooltip();\n this.isPanning = false;\n this.isZoomed = false;\n chart.isZoomed = false;\n chart.svgObject.setAttribute('cursor', 'auto');\n }\n };\n /**\n * To cancel zoom event.\n *\n * @returns {void}\n * @public\n */\n Zoom.prototype.zoomCancel = function (axes, zoomCompleteEventCollection) {\n for (var _i = 0, _a = zoomCompleteEventCollection; _i < _a.length; _i++) {\n var zoomCompleteEvent = _a[_i];\n for (var _b = 0, _c = axes; _b < _c.length; _b++) {\n var axis = _c[_b];\n if (axis.name === zoomCompleteEvent.axis.name) {\n axis.zoomFactor = zoomCompleteEvent.previousZoomFactor;\n axis.zoomPosition = zoomCompleteEvent.previousZoomPosition;\n axis.visibleRange = zoomCompleteEvent.previousVisibleRange;\n break;\n }\n }\n }\n };\n /**\n * Return boolean property to show zooming toolkit.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.isAxisZoomed = function (axes) {\n var showToolkit = false;\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n showToolkit = (showToolkit || (axis.zoomFactor !== 1 || axis.zoomPosition !== 0));\n }\n return showToolkit;\n };\n Zoom.prototype.zoomToolkitMove = function () {\n var element = this.toolkitElements;\n this.zoomkitOpacity = 1;\n element.setAttribute('opacity', '' + this.zoomkitOpacity);\n return false;\n };\n Zoom.prototype.zoomToolkitLeave = function () {\n var element = this.toolkitElements;\n this.zoomkitOpacity = 1;\n element.setAttribute('opacity', '' + this.zoomkitOpacity);\n return false;\n };\n /**\n * @hidden\n */\n Zoom.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n EventHandler.add(this.chart.element, this.wheelEvent, this.chartMouseWheel, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchStartEvent, this.mouseDownHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n this.chart.on(this.cancelEvent, this.mouseCancelHandler, this);\n };\n /**\n * @hidden\n */\n Zoom.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n EventHandler.remove(this.chart.element, this.wheelEvent, this.chartMouseWheel);\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchStartEvent, this.mouseDownHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n this.chart.off(this.cancelEvent, this.mouseCancelHandler);\n };\n /**\n * Handles the mouse wheel on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Zoom.prototype.chartMouseWheel = function (e) {\n var chart = this.chart;\n var offset = chart.element.getBoundingClientRect();\n var svgRect = getElement(chart.svgId).getBoundingClientRect();\n var mouseX = (e.clientX - offset.left) - Math.max(svgRect.left - offset.left, 0);\n var mouseY = (e.clientY - offset.top) - Math.max(svgRect.top - offset.top, 0);\n if (this.zooming.enableMouseWheelZooming &&\n withInBounds(mouseX, mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n e.preventDefault();\n this.performMouseWheelZooming(e, mouseX, mouseY, chart, chart.axisCollections);\n }\n return false;\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseMoveHandler = function (e) {\n //Zooming for chart\n var chart = this.chart;\n var touches = null;\n if (e.type === 'touchmove') {\n if (e.preventDefault && this.isIOS &&\n (this.isPanning || (chart.isDoubleTap)\n || (this.zooming.enablePinchZooming && this.touchStartList.length > 1))) {\n e.preventDefault();\n }\n touches = e.touches;\n }\n if (chart.isChartDrag) {\n if (chart.isTouch) {\n this.touchMoveList = this.addTouchPointer(this.touchMoveList, e, touches);\n if (this.zooming.enablePinchZooming && this.touchMoveList.length > 1\n && this.touchStartList.length > 1) {\n this.performPinchZooming(e, chart);\n }\n }\n this.renderZooming(e, chart, chart.isTouch);\n }\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseDownHandler = function (e) {\n //Zooming for chart\n var chart = this.chart;\n var touches = null;\n var target;\n if (e.type === 'touchstart') {\n touches = e.touches;\n target = e.target;\n }\n else {\n target = e.target;\n }\n if (target.id.indexOf(chart.element.id + '_Zooming_') === -1 &&\n (chart.zoomSettings.enablePinchZooming || chart.zoomSettings.enableSelectionZooming) &&\n withInBounds(chart.previousMouseMoveX, chart.previousMouseMoveY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n chart.isChartDrag = true;\n }\n if (chart.isTouch) {\n this.touchStartList = this.addTouchPointer(this.touchStartList, e, touches);\n }\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseUpHandler = function (e) {\n var chart = this.chart;\n var performZoomRedraw = e.target.id.indexOf(chart.element.id + '_ZoomOut_') === -1 ||\n e.target.id.indexOf(chart.element.id + '_ZoomIn_') === -1;\n if (chart.isChartDrag || performZoomRedraw) {\n this.redrawOnZooming(chart, true, true);\n }\n if (chart.isTouch) {\n if (chart.isDoubleTap && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)\n && this.touchStartList.length === 1 && this.isZoomed) {\n this.toolkit.reset(e);\n }\n this.touchStartList = [];\n chart.isDoubleTap = false;\n }\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseCancelHandler = function () {\n if (this.isZoomed) {\n this.performZoomRedraw(this.chart);\n }\n this.pinchTarget = null;\n this.touchStartList = [];\n this.touchMoveList = [];\n };\n /**\n * Handles the touch pointer.\n *\n * @returns {ITouches[]} touchList collection\n * @private\n */\n Zoom.prototype.addTouchPointer = function (touchList, e, touches) {\n if (touches) {\n touchList = [];\n for (var i = 0, length_1 = touches.length; i < length_1; i++) {\n touchList.push({ pageX: touches[i].clientX, pageY: touches[i].clientY, pointerId: null });\n }\n }\n else {\n touchList = touchList ? touchList : [];\n if (touchList.length === 0) {\n touchList.push({ pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId });\n }\n else {\n for (var i = 0, length_2 = touchList.length; i < length_2; i++) {\n if (touchList[i].pointerId === e.pointerId) {\n touchList[i] = { pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId };\n }\n else {\n touchList.push({ pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId });\n }\n }\n }\n }\n return touchList;\n };\n /**\n * Get module name.\n */\n Zoom.prototype.getModuleName = function () {\n // Returns te module name\n return 'Zoom';\n };\n /**\n * To destroy the zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.destroy = function () {\n // Destroy method performed here\n this.removeEventListener();\n };\n return Zoom;\n}());\nexport { Zoom };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ButtonsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-buttons';\n }\n }\n});\nexport var ButtonsPlugin = {\n name: 'e-buttons',\n install: function (Vue) {\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n/**\n * 'e-button' directive represent a button of Vue Dialog\n * It must be contained in a Dialog component(`ejs-dialog`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var DialogButtonDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-dialogbutton';\n }\n }\n});\nexport var DialogButtonPlugin = {\n name: 'e-dialogbutton',\n install: function (Vue) {\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ButtonsDirective, DialogButtonDirective, ButtonsPlugin, DialogButtonPlugin } from './buttons.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowDragging', 'animationSettings', 'buttons', 'closeOnEscape', 'content', 'cssClass', 'enableHtmlSanitizer', 'enablePersistence', 'enableResize', 'enableRtl', 'footerTemplate', 'header', 'height', 'isModal', 'locale', 'minHeight', 'position', 'resizeHandles', 'showCloseIcon', 'target', 'visible', 'width', 'zIndex', 'beforeClose', 'beforeOpen', 'beforeSanitizeHtml', 'close', 'created', 'destroyed', 'drag', 'dragStart', 'dragStop', 'open', 'overlayClick', 'resizeStart', 'resizeStop', 'resizing'];\nexport var modelProps = ['visible'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the VueJS Dialog component\n * ```html\n * \n * ```\n */\nexport var DialogComponent = vueDefineComponent({\n name: 'DialogComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Dialog({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-buttons\": \"e-dialogbutton\" },\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n getButtons: function (index) {\n return this.ej2Instances.getButtons(index);\n },\n getDimension: function () {\n return this.ej2Instances.getDimension();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n refreshPosition: function () {\n return this.ej2Instances.refreshPosition();\n },\n sanitizeHelper: function (value) {\n return this.ej2Instances.sanitizeHelper(value);\n },\n show: function (isFullScreen) {\n return this.ej2Instances.show(isFullScreen);\n },\n }\n});\nexport var DialogPlugin = {\n name: 'ejs-dialog',\n install: function (Vue) {\n Vue.component(DialogPlugin.name, DialogComponent);\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/* eslint-disable */\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = 'data:';*/\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\nexport { Utils };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { Utils } from './index';\nvar DecompressorHuffmanTree = /** @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\nexport { DecompressorHuffmanTree };\n/* eslint-enable */ \n","/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { DecompressorHuffmanTree } from './decompressor-huffman-tree';\nimport { Utils } from './utils';\nimport { ChecksumCalculator } from './checksum-calculator';\nvar CompressedStreamReader = /** @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nexport { CompressedStreamReader };\nvar Stream = /** @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\nexport { Stream };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { CompressedStreamWriter, Stream, CompressedStreamReader } from './index';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { Utils } from './utils';\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipArchive = this;\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n itemHelper;\n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\nvar ZipArchiveItemHelper = /** @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n var past = new Uint8Array(0);\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\n}());\nexport { ZipArchiveItemHelper };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n/* eslint-enable */ \n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n this.csvStr += '\\r\\n';\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1 || value.indexOf('\\\"') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n /**\n * Returns a Blob object containing CSV data with optional encoding.\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n CsvHelper.prototype.saveAsBlob = function (encodingType) {\n if (encodingType != undefined) {\n var encoding = new Encoding();\n var encodeString = 'UTF-8';\n if (encodingType.toUpperCase() == \"ANSI\") {\n encoding.type = 'Ansi';\n encodeString = 'ANSI';\n }\n else if (encodingType.toUpperCase() == \"UNICODE\") {\n encoding.type = 'Unicode';\n encodeString = 'UNICODE';\n }\n else {\n encoding.type = 'Utf8';\n encodeString = 'UTF-8';\n }\n var buffer = encoding.getBytes(this.csvStr, 0, this.csvStr.length);\n return new Blob([buffer], { type: 'text/csv;charset=' + encodeString });\n }\n else\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.changeNumberFormats = function (value) {\n if (typeof value == \"string\") {\n var regex = new RegExp(this.currency, 'g');\n value = value.replace(regex, '[$' + this.currency + ']');\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n value[i] = value[i].replace(this.currency, '[$' + this.currency + ']');\n }\n }\n return value;\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n if (this.currency.length > 1) {\n returnFormat = this.changeNumberFormats(returnFormat);\n }\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n /**\n * Returns a Promise with a Blob based on the specified BlobSaveType and optional encoding.\n * @param {BlobSaveType} blobSaveType - A string indicating the type of Blob to generate ('text/csv' or other).\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n Workbook.prototype.saveAsBlob = function (blobSaveType, encodingType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob(encodingType);\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n pic.lastRow -= 1;\n pic.lastColumn -= 1;\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (typeof value == \"string\") {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n var drawingIndex = 0;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n drawingIndex++;\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\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 __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\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-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.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\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\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","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.idx = 0;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[parseInt(i.toString(), 10)]) {\n return true;\n }\n else if (cols[parseInt(i.toString(), 10)].columns) {\n var cnt = parent.length;\n parent.push(cols[parseInt(i.toString(), 10)]);\n if (!this.findColParent(col, cols[parseInt(i.toString(), 10)].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols, isNotStackedHeader) {\n var columnModel = [];\n var subCols = [];\n for (var i = 0, len = cols.length; i < len; i++) {\n if (!isNullOrUndefined(cols[parseInt(i.toString(), 10)])) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n else if (isNotStackedHeader) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n if (cols[parseInt(i.toString(), 10)].columns) {\n subCols = subCols.concat(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[parseInt(oldIdx.toString(), 10)]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if ((parent || this.parent.lockcolPositionCount) && !reorderByColumn &&\n !this.parent.enableColumnVirtualization) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n if (this.parent.frozenColumns) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].freeze === 'Left') {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n else {\n if (this.parent.getFrozenLeftCount() > destIndex) {\n column.freeze = 'Left';\n }\n else if ((cols.length - this.parent.getFrozenRightColumnsCount()) <= destIndex) {\n column.freeze = 'Right';\n }\n else {\n column.freeze = column.freeze === 'Fixed' ? 'Fixed' : undefined;\n }\n }\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n if (this.parent.isFrozenGrid()) {\n var cols_1 = this.parent.columns;\n this.idx = 0;\n this.refreshColumnIndex(cols_1);\n this.parent.notify(events.refreshFrozenPosition, {});\n }\n };\n Reorder.prototype.refreshColumnIndex = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].index = this.idx;\n this.idx++;\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n this.refreshColumnIndex(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = this.parent.columns;\n var headers = this.getHeaderCells();\n var stackedHdrColumn = this.parent.getStackedColumns(cols);\n var stackedCols = [];\n if (stackedHdrColumn.length) {\n stackedCols = this.getAllStackedheaderParentColumns(headers);\n }\n var flatColumns = stackedHdrColumn.length && stackedCols.length ?\n this.getColumnsModel(stackedCols) : this.getColumnsModel(cols, true);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getAllStackedheaderParentColumns = function (headers) {\n var stackedCols = [];\n for (var i = 0; i < headers.length; i++) {\n if (headers[parseInt(i.toString(), 10)].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[parseInt(i.toString(), 10)].closest('thead').firstChild === headers[parseInt(i.toString(), 10)].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].firstElementChild.getAttribute('e-mappinguid')));\n }\n }\n return stackedCols;\n };\n Reorder.prototype.getHeaderCells = function () {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[parseInt(i.toString(), 10)], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + literals.headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.upArrow.parentNode) {\n remove(this.upArrow);\n }\n if (this.downArrow.parentNode) {\n remove(this.downArrow);\n }\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'leftArrow') {\n e.action = 'ctrlLeftArrow';\n }\n else if (e.action === 'rightArrow') {\n e.action = 'ctrlRightArrow';\n }\n }\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell\n var uid = target.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target)) &&\n gObj.getColumnByUid(uid).allowReordering && e.column.allowReordering) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n else {\n if (closest && closest.isEqualNode(this.element) &&\n !((gObj.allowGrouping && e.column.allowGrouping) || e.column.allowReordering)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else if (!closest && !(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n var cliRectBaseLeft = cliRect.left;\n var scrollElem = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n this.upArrow.style.top = isSticky ? cliRect.top + cliRect.height + 'px' : cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = isSticky ? cliRect.top - 7 + 'px' : cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = isSticky ? (isLeft ? cliRect.left : cliRect.right) - 4 + 'px' :\n (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { addStickyColumnPosition, appendChildren } from '../base/util';\nimport { destroy, commandColumnDestroy } from '../base/constant';\n/**\n * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.childRefs = [];\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n tabindex: '-1', role: 'gridcell'\n }\n });\n _this.parent.on(destroy, _this.destroyButtons, _this);\n _this.parent.on(commandColumnDestroy, _this.destroyButtons, _this);\n return _this;\n }\n CommandColumnRenderer.prototype.destroyButtons = function (args) {\n for (var i = 0; i < this.childRefs.length; i++) {\n if (this.childRefs[parseInt(i.toString(), 10)] && !this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n if (this.childRefs[parseInt(i.toString(), 10)].element) {\n this.childRefs[parseInt(i.toString(), 10)].element.innerHTML = '';\n }\n }\n }\n this.childRefs = [];\n if (args.type === 'refreshCommandColumn') {\n var elem = this.parent.element.querySelectorAll('.e-unboundcell');\n if (elem.length) {\n for (var i = 0; i < elem.length; i++) {\n if (elem[parseInt(i.toString(), 10)]) {\n if (elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv')) {\n elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv').innerHTML = '';\n }\n elem[parseInt(i.toString(), 10)].innerHTML = '';\n }\n }\n elem = null;\n }\n }\n else {\n this.parent.off(destroy, this.destroyButtons);\n this.parent.off(commandColumnDestroy, this.destroyButtons);\n }\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', this.localizer.getConstant('CommandColumnAria') + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[\"\" + uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if ((!this.parent.enableVirtualization && this.parent.isEdit) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, cell.column, node);\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n buttonOption.buttonOption.cssClass = this.parent.cssClass ?\n buttonOption.buttonOption.cssClass + ' ' + this.parent.cssClass : buttonOption.buttonOption.cssClass;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n this.childRefs.push(buttonObj);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd, destroy } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.' + literals.row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].commands) {\n var commandCols = cols[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[parseInt(j.toString(), 10)][\"\" + idInString] === uid && commandCols[parseInt(j.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(j.toString(), 10)];\n }\n else {\n var buttons = [].slice.call(closest(target, '.e-unboundcell').querySelectorAll('button'));\n var index = buttons.findIndex(function (ele) { return ele === target; });\n if (index < commandCols.length && commandCols[parseInt(index.toString(), 10)][\"\" + typeInString] === type &&\n String(commandCols[parseInt(j.toString(), 10)][\"\" + idInString]) === uid) {\n commandColumn = commandCols[parseInt(index.toString(), 10)];\n }\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(literals.dataRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n this.parent.off(destroy, this.destroy);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n this.parent.on(destroy, this.destroy, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[parseInt(i.toString(), 10)].commands) {\n var commandCol = col[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[parseInt(j.toString(), 10)][\"\" + uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable max-len */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding, Location } from '../model/base';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim, getTextAnchor } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Series')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"itemPadding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"enableHighlight\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property('Normal')\n ], LegendSettings.prototype, \"textWrap\", void 0);\n __decorate([\n Property('Ellipsis')\n ], LegendSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"isInversed\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"reverse\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n *\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function BaseLegend(chart) {\n this.maxItemHeight = 0;\n this.rowHeights = [];\n this.pageHeights = [];\n this.columnHeights = [];\n this.pageXCollections = []; // pages of x locations\n this.chartRowCount = 1;\n this.legendTitleCollections = [];\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart' || chart.getModuleName() === 'chart3d');\n this.isAccChartControl = (chart.getModuleName() === 'accumulationchart');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.isStockChartControl = (chart.getModuleName() === 'stockChart');\n this.bulletChart = this.chart;\n this.fivePixel = 5;\n this.rowCount = 0;\n this.pageButtonSize = 8;\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n }\n ;\n /**\n * Calculate the bounds for the legends.\n *\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize) {\n var legend = this.legend;\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n this.itemPadding = this.legend.itemPadding ? this.legend.itemPadding : this.isVertical ? this.legend.padding : 20;\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n if (this.chart.getModuleName() === 'chart3d') {\n this.library.get3DLegendBounds(availableSize, this.legendBounds, legend);\n }\n else {\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n }\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n *\n * @param position\n * @param availableSize\n * @param position\n * @param availableSize\n * @returns {void}\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl || this.isStockChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @returns {void}\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n if (legend.mode === 'Gradient') {\n legendBounds.width = legend.width ? legendBounds.width : this.isVertical ? computedWidth : 0.75 * legendBounds.width;\n legendBounds.height = legend.height ? legendBounds.height : this.isVertical ? 0.75 * legendBounds.height : computedHeight;\n }\n else {\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n }\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ?\n maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var marginBottom = this.chart.margin.bottom;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n else if (position === 'Top') {\n var axisTextSize = void 0;\n if (this.isChartControl) {\n axisTextSize = measureText('100', this.chart.verticalAxes[0].labelStyle, this.chart.themeStyle.legendLabelFont);\n }\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : (this.isChartControl ? -padding * 2 - axisTextSize.height / 2 : 0);\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n else if (position === 'Left') {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw) {\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n this.itemPadding = this.isBulletChartControl ? legend.padding : this.itemPadding;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n this.legendRegions = [];\n this.chartRowCount = 1;\n var maxHeight = 0;\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n if (this.isChartControl || (this.isAccChartControl && !this.isVertical)) {\n var pageCount = 1;\n var rowHeights = this.rowHeights[0] + padding;\n for (var i = 1; i < this.rowHeights.length; i++) {\n if ((rowHeights + this.rowHeights[i] + padding) > (this.legendBounds.height - this.pageButtonSize - this.maxItemHeight / 2)) {\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n pageCount++;\n rowHeights = 0;\n }\n rowHeights += (this.rowHeights[i] + (this.isVertical ? this.itemPadding : padding));\n }\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n this.totalPages = pageCount;\n }\n for (var i = 0; i < this.legendCollections.length; i++) {\n if (this.legendCollections[i].text !== '') {\n maxHeight = Math.max(this.legendCollections[i].textSize.height, maxHeight);\n break;\n }\n else {\n continue;\n }\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\n }\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (this.isTitle && !this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = titlePosition === ((!this.isRtlEnable) ? 'Left' : 'Right') ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n if (chart.legendSettings.mode === 'Gradient' && this.legendCollections.length > 1) {\n this.getLinearLegend(legendBounds, chart, legend, legendTranslateGroup);\n this.totalPages = 1;\n }\n else if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var count = 0;\n var previousLegend = this.legendCollections[firstLegend];\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var startPadding = this.isBulletChartControl ? 0 : titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left;\n var xLocation = this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n (!this.isRtlEnable) ? legendBounds.x + startPadding : legendBounds.x + ((this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width) - startPadding;\n var start = new ChartLocation(xLocation, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled || chart.enableRtl ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + this.itemPadding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isAccChartControl || this.isChartControl || this.isBulletChartControl || this.isStockChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n var legendIndex = void 0;\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n var legendOption = void 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n legendIndex = !this.isReverse ? count : (this.legendCollections.length - 1) - count;\n if (this.chart.getModuleName() === 'accumulationchart') {\n legendOption.fill = (this.chart || this.chart || this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n if (this.chart.getModuleName() === 'stockChart') {\n legendOption.type = this.chart.visibleSeries[count].type;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', legendIndex)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', i === 0 ? '0' : '');\n legendSeriesGroup.setAttribute('aria-label', legend.description || (legendOption.text + ' series is ' + (legendOption.visible ? 'showing, press enter to hide the ' : 'hidden, press enter to show the ') + legendOption.text + ' series'));\n legendSeriesGroup.setAttribute('role', 'button');\n legendSeriesGroup.setAttribute('aria-pressed', legendOption.visible ? 'true' : 'false');\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, legendIndex);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count, legendIndex);\n if (legendSeriesGroup) {\n legendSeriesGroup.style.cssText =\n 'pointer-events: bounding-box; cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer');\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n this.totalPages = (this.isPaging && !this.isBulletChartControl && !this.legend.enablePages && !this.isVertical &&\n this.totalPages > this.chartRowCount) ? this.chartRowCount : this.totalPages;\n if (this.isPaging && this.totalPages > 1) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n };\n /** @private */\n BaseLegend.prototype.getLinearLegend = function (legendBounds, chart, legend, legendTranslateGroup) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var previousLegend = this.legendCollections[0];\n var nextLegend = this.legendCollections[1];\n var defElement = this.chart.renderer.createDefs();\n var gradientLegendCount = 0;\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var fillColors = [];\n var numberItems = [];\n if (legend.title) {\n if (!this.isVertical) {\n if (legend.titlePosition === 'Left') {\n legendBounds.x += this.legendTitleSize.width;\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Right') {\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Top') {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n else {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var colorMap = _a[_i];\n if (numberItems.indexOf(colorMap.start) < 0) {\n numberItems.push(colorMap.start);\n }\n if (colorMap.colors.length > 2) {\n var diffValue = (colorMap.end - colorMap.start);\n var colorsLength = colorMap.colors.length - 1;\n if (diffValue > 0) {\n diffValue = diffValue / colorsLength;\n for (var index = 1; index < colorsLength; index++) {\n var calculatedValue = colorMap.start + (diffValue * index);\n numberItems.push(calculatedValue);\n }\n }\n else {\n for (var index = 1; index < colorsLength; index++) {\n numberItems.push(colorMap.start);\n }\n }\n }\n if (numberItems.indexOf(colorMap.end) < 0) {\n numberItems.push(colorMap.end);\n }\n for (var _b = 0, _c = colorMap.colors; _b < _c.length; _b++) {\n var fillColor = _c[_b];\n if (fillColors.indexOf(fillColor) < 0) {\n fillColors.push(fillColor);\n }\n }\n if (colorMap.colors.length > 0 && colorMap.colors.length < 2) {\n fillColors.push(colorMap.colors[0]);\n }\n }\n var x1 = this.isRtlEnable && !this.isVertical ? '100%' : '0%';\n var x2 = this.isVertical || this.isRtlEnable ? '0%' : '100%';\n var y2 = this.isVertical ? '100%' : '0%';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', x1);\n linerGradientEle.setAttribute('y1', '0%');\n linerGradientEle.setAttribute('x2', x2);\n linerGradientEle.setAttribute('y2', y2);\n var full = numberItems[numberItems.length - 1] - numberItems[0];\n for (var b = 0; b < fillColors.length; b++) {\n var offsetValue = numberItems[b] - numberItems[0];\n offsetValue = offsetValue / full;\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', offsetValue.toString());\n stopEle.setAttribute('stop-color', fillColors[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n var startLabel = previousLegend.text.toString();\n var endLabel = nextLegend.text.toString();\n var startTextSize = measureText(startLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var endTextSize = measureText(endLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var textWidth = startTextSize.width > endTextSize.width ? startTextSize.width : endTextSize.width;\n var textHeight = startTextSize.height > endTextSize.height ? startTextSize.height : endTextSize.height;\n var otherSpaces = (2 * textWidth) + (4 * legend.padding);\n var linearBarWidth = legendBounds.width;\n var linearBarHeight = legendBounds.height;\n var xValue = legendBounds.x + textWidth + (2 * legend.padding);\n var yValue = legendBounds.y + legend.padding;\n var startLabelY;\n var endLabelY;\n var startLabelX;\n var endLabelX;\n if (this.isVertical) {\n otherSpaces = (2 * textHeight) + (4 * legend.padding);\n linearBarWidth = legendBounds.width - (2 * legend.padding);\n linearBarHeight = legendBounds.height - otherSpaces;\n xValue = legendBounds.x + legend.padding;\n yValue = legendBounds.y + textHeight + (2 * legend.padding);\n startLabelY = legendBounds.y + legend.padding + textHeight;\n endLabelY = yValue + linearBarHeight + textHeight;\n startLabelX = (legendBounds.x + (legendBounds.width * 0.5)) - (textWidth * 0.5);\n endLabelX = startLabelX;\n if (linearBarWidth > 30) {\n var diffWidth = linearBarWidth - 30;\n linearBarWidth = 30;\n xValue = xValue + (diffWidth / 2);\n }\n }\n else {\n linearBarWidth = legendBounds.width - otherSpaces;\n linearBarHeight = legendBounds.height - (2 * legend.padding);\n startLabelX = legendBounds.x + ((!this.isRtlEnable) ? legend.padding + (textWidth - startTextSize.width) :\n linearBarWidth + (3 * legend.padding) + textWidth);\n endLabelX = legendBounds.x + ((!this.isRtlEnable) ? linearBarWidth + (3 * legend.padding) + textWidth :\n legend.padding + (textWidth - endTextSize.width));\n startLabelY = legendBounds.y + (legendBounds.height * 0.5) + (textHeight * 0.25);\n endLabelY = startLabelY;\n if (linearBarHeight > 30) {\n var diffHeight = linearBarHeight - 30;\n linearBarHeight = 30;\n yValue = yValue + (diffHeight / 2);\n }\n }\n var anchor = chart.enableRtl ? 'end' : '';\n var textOptions = new TextOption('', startLabelX, startLabelY, anchor, startLabel);\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 1);\n var fontcolor = previousLegend.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n textOptions = new TextOption('', endLabelX, endLabelY, anchor, endLabel);\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 2);\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n var gradientLegend = chart.renderer.drawRectangle({\n width: linearBarWidth,\n height: linearBarHeight,\n x: xValue,\n y: yValue,\n fill: 'url(#' + this.generateId(previousLegend, 'linearGradient', gradientLegendCount) + ')'\n });\n defElement.appendChild(linerGradientEle);\n legendTranslateGroup.appendChild(defElement);\n legendTranslateGroup.appendChild(gradientLegend);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param legendCollection\n * @returns {number}\n * @private\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n *\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding), this.chart.enableRtl, this.chart.themeStyle.legendTitleFont);\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle, this.chart.enableRtl, this.chart.themeStyle.legendTitleFont);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle, this.chart.themeStyle.legendTitleFont);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n var alignment = legend.titleStyle.textAlignment;\n this.isTop = legend.titlePosition === 'Top';\n var anchor = getTextAnchor(legend.titleStyle.textAlignment, chart.enableRtl);\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : (chart.enableRtl) ? 'end' : '';\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color || this.chart.themeStyle.legendTitleFont.color, legendGroup, null, null, null, null, null, null, null, null, null, null, this.chart.themeStyle.legendTitleFont);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds);\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n options.width = (this.isRtlEnable && this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width;\n if (legendGroup) {\n legendGroup.appendChild(chart.renderer.drawRectangle(options));\n }\n else {\n chart.renderer.drawRectangle(options);\n }\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n options.y += (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart' && !this.isStockChartControl) && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.style.cssText = 'clip-path:url(#' + clippath.id + ')';\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, legendIndex) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') && (((legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1)) ||\n ((legendOption.shape === 'HorizontalLine') || (legendOption.shape === 'VerticalLine') || (legendOption.shape === 'Cross')));\n var isCustomBorder = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var borderColor;\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n var strokewidth = isStrokeWidth ? (this.legend.mode === 'Series' ?\n this.chart.visibleSeries[legendIndex].width : this.chart.visibleSeries[0].width) :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var regionPadding;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n if (isCustomBorder && legendIndex < this.chart.visibleSeries.length) {\n var series = this.chart.visibleSeries[legendIndex];\n var seriesBorder = series.border;\n var isLineShapemarker = shape === 'HorizontalLine' || shape === 'VerticalLine';\n borderColor = isLineShapemarker ? symbolColor : seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = isLineShapemarker ? series.width : seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', legendIndex), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), this.legend.opacity, legendOption.dashArray, '');\n var textSize = measureText(legendOption.text, this.legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var x = this.legend.isInversed && !this.isRtlEnable ? legendOption.location.x + textSize.width + this.legend.shapePadding\n : legendOption.location.x;\n var y = legendOption.location.y;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x, legendOption.location.y, this.legend.shapeWidth, this.legend.shapeHeight + regionPadding), index: legendIndex\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n (legendOption.type === 'Doughnut' && shape === 'Doughnut')) {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', legendIndex);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i, legendIndex) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', legendIndex);\n textOptions.text = legendOption.textCollection.length > 0 ? legendOption.textCollection : legendOption.text;\n if (legend.isInversed && !this.isRtlEnable) {\n textOptions.x = legendOption.location.x - (legend.shapeWidth / 2);\n }\n else if (this.isRtlEnable) {\n var textWidth = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont).width;\n textOptions.x = legendOption.location.x - ((legendOption.textCollection.length > 1 ? textWidth / legendOption.textCollection.length : textWidth) + legend.shapeWidth / 2 + legend.shapePadding);\n }\n else {\n textOptions.x = legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n }\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var element = textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n if (isCanvas) {\n var textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n this.legendRegions[i].rect.y = textOptions.y < this.legendRegions[i].rect.y ? textOptions.y : this.legendRegions[i].rect.y;\n this.legendRegions[i].rect.width += textSize.width;\n this.legendRegions[i].rect.height = textSize.height;\n this.legendRegions[i].rect.y -= textSize.height * 0.5;\n this.legendRegions[i].rect.x -= (this.isRtlEnable) ? this.legendRegions[i].rect.width : 0;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n */\n // tslint:disable-next-line:max-func-body-length\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n var pageUp = this.legendID + (!this.isRtlEnable ? '_pageup' : '_pagedown');\n var pageDown = this.legendID + (!this.isRtlEnable ? '_pagedown' : '_pageup');\n var symbolOption = new PathOption(pageUp, 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n this.pagingRegions = [];\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n if (this.isBulletChartControl || this.isStockChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n }\n if (paginggroup) {\n paginggroup.style.cursor = 'pointer';\n }\n if ((this.isChartControl || this.isAccChartControl) && !(!legend.enablePages && this.isPaging)) {\n this.clipPathHeight = this.pageHeights[0];\n }\n else {\n this.clipPathHeight = (rowCount * (this.maxItemHeight + legend.padding));\n }\n //this.clipPathHeight = !(this.isChartControl) ? (rowCount * (this.maxItemHeight + legend.padding)) : this.columnHeights[0];\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var pageTextElement;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var translateX = (this.isRtlEnable) ? legend.border.width + (iconSize / 2) : bounds.width - (2 * (iconSize + padding) + padding + size.width);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + (padding / 2) + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : !this.isRtlEnable ? this.backwardArrowOpacity : this.forwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5 : x, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = !this.isRtlEnable ? '1/' + this.totalPages : this.totalPages + '/1';\n var color = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : legend.textStyle.color || this.chart.themeStyle.legendLabelFont.color;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = !this.isRtlEnable ? this.currentPageNumber + '/' + this.totalNoOfPages : this.totalNoOfPages + '/' + this.currentPageNumber;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, color, paginggroup, false, false, false, false, null, new Rect(translateX, 0, 0, 0), null, null, null, null, this.chart.themeStyle.legendLabelFont);\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - (this.isBulletChartControl ? this.fivePixel : 0) - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = pageDown;\n symbolOption.opacity = !legend.enablePages ? !this.isRtlEnable ? this.forwardArrowOpacity : this.backwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5) : x, y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + translateX + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(isCanvas, null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(isCanvas, pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n BaseLegend.prototype.getPageHeight = function (pageHeights, pageCount) {\n var sum = 0;\n for (var i = 0; i < pageCount; i++) {\n sum += pageHeights[i];\n }\n return sum;\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n */\n BaseLegend.prototype.translatePage = function (isCanvas, pagingText, page, pageNumber, legend) {\n var size = (this.isChartControl || this.isAccChartControl) ? (page ? this.getPageHeight(this.pageHeights, page) : 0) : ((this.clipPathHeight) * page);\n if (!isCanvas && (this.isChartControl || this.isAccChartControl)) {\n this.clipRect.setAttribute('height', this.pageHeights[page].toString());\n if (this.isAccChartControl && this.isPaging && !legend.enablePages && this.isVertical) {\n this.clipRect.setAttribute('height', this.legendBounds.height.toString());\n }\n }\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && !this.isStockChartControl && this.isVertical) {\n var pageX = this.pageXCollections[page * this.maxColumns];\n size = (!this.isRtlEnable) ? pageX - this.legendBounds.x : (this.legendBounds.x + this.maxWidth) - pageX;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = ((!this.isRtlEnable) ? 'translate(-' : 'translate(') + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = (pageNumber) + '/' + this.totalPages;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param event\n * @param pageUp\n * @param event\n * @param pageUp\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[0], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(isCanvas, pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(isCanvas, pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n *\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl || this.isStockChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n *\n * @param event\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex, dashArray) {\n this.location = { x: 0, y: 0 };\n this.textCollection = [];\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n this.dashArray = dashArray;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\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","const dates = {\r\n addDays: function (date, days) {\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n },\r\n\r\n getTradePeriodName: function (startDate, endDate) {\r\n if (Date.parse(startDate) >= Date.parse(endDate)) {\r\n throw new Error(\"'startDate' must be earlier than the 'endDate'. Please correct the dates.\");\r\n }\r\n\r\n startDate = new Date(startDate);\r\n endDate = new Date(endDate)\r\n\r\n var yearSuffix = startDate.getFullYear().ToString().Substring(2);\r\n var numOfDays = this.getDateDiffInDays(startDate, endDate);\r\n var tradeablePeriod = null;\r\n\r\n // potential M, Q, or CAL periods\r\n if (startDate.getFullYear() === endDate.getFullYear()) {\r\n // month\r\n if (numOfDays <= 31 && numOfDays >= 28) {\r\n startDate = this.addDays(startDate, 1);\r\n tradeablePeriod = startDate.toLocaleString('default', { month: 'short' }) + \"-\" + yearSuffix;\r\n }\r\n\r\n //quarter\r\n if (numOfDays <= 92 && numOfDays >= 90) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (this.getQuarter(startDate) === 1) {\r\n tradeablePeriod = \"Q1-\" + yearSuffix;\r\n } else if (this.getQuarter(startDate) === 2) {\r\n tradeablePeriod = \"Q2-\" + yearSuffix;\r\n } else if (this.getQuarter(startDate) === 3) {\r\n tradeablePeriod = \"Q3-\" + yearSuffix;\r\n } else {\r\n tradeablePeriod = \"Q4-\" + yearSuffix;\r\n }\r\n }\r\n\r\n // summer season\r\n if (numOfDays >= 182 && numOfDays <= 183) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (startDate.toLocaleString('default', { month: 'short' }) === \"Apr\") {\r\n tradeablePeriod = \"Sum-\" + yearSuffix;\r\n }\r\n }\r\n\r\n // calendar\r\n if (numOfDays >= 364 && numOfDays <= 366) {\r\n tradeablePeriod = \"Cal-\" + yearSuffix;\r\n }\r\n } else if (startDate.getFullYear() + 1 === endDate.getFullYear()) {\r\n if (numOfDays >= 182 && numOfDays <= 183) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (startDate.toLocaleString('default', { month: 'short' }) === \"Oct\") {\r\n tradeablePeriod = \"Win-\" + yearSuffix;\r\n }\r\n }\r\n }\r\n\r\n return tradeablePeriod;\r\n },\r\n\r\n getDateDiffInDays: function (startDate, endDate) {\r\n var result = Math.round(Math.abs((startDate - endDate) / (24 * 60 * 60 * 1000))) + 1;\r\n return result;\r\n },\r\n getBusinessDatesCount: function (startDate, endDate) {\r\n if (startDate == undefined || endDate == undefined)\r\n return 0;\r\n\r\n let count = 0;\r\n //set dates to have 0 hours,minutes... as otherwise for october it does the matching and due to daylight saving change it doesnt match the last day and we dont calculate it.\r\n startDate.setHours(0, 0, 0, 0);\r\n endDate.setHours(0, 0, 0, 0);\r\n\r\n const curDate = new Date(startDate.getTime());\r\n while (curDate <= endDate) {\r\n const dayOfWeek = curDate.getDay();\r\n if (dayOfWeek !== 0 && dayOfWeek !== 6) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n return count;\r\n },\r\n getQuarter: function (date) {\r\n date = new Date(date);\r\n\r\n return Math.floor((date.getMonth() + 3) / 3);\r\n }\r\n}\r\n\r\nexport default dates;","//! 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","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.style.cssText = colors[i].style;\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'style') {\n element.style.cssText = options[keys[i]];\n }\n else {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * To render a Circular clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawCircularClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n textStyle: { fontFamily: 'Segoe UI', color: '#000000' }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n tooltipBoldLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipLightLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipHeaderLine: '#9A9A9A',\n textStyle: theme === 'MaterialDark' ? { fontFamily: 'Roboto', color: 'rgba(18, 18, 18, 1)' } : theme === 'FabricDark' ? { fontFamily: 'Segoe UI', color: '#DADADA' } : { fontFamily: 'Helvetica', color: '#1A1A1A' }\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n textStyle: { fontFamily: 'Inter', color: '#F9FAFB' }\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#1F2937',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Inter', color: '#1F2937' }\n };\n break;\n case 'Bootstrap5':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n textStyle: { fontFamily: 'Helvetica', color: '#212529' }\n };\n break;\n case 'Fluent':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#323130' }\n };\n break;\n case 'FluentDark':\n style = {\n tooltipFill: '#323130',\n tooltipBoldLabel: '#F3F2F2',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#F3F2F1' }\n };\n break;\n case 'Material3':\n style = {\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n textStyle: { fontFamily: 'Roboto', color: '#F4EFF4' }\n };\n break;\n case 'Material3Dark':\n style = {\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n textStyle: { fontFamily: 'Roboto', color: '#313033' }\n };\n break;\n default:\n style = {\n tooltipFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n tooltipBoldLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipLightLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipHeaderLine: theme === 'Fabric' ? '#D2D0CE' : '#ffffff',\n textStyle: theme === 'Material' ? { fontFamily: 'Roboto', color: 'rgba(249, 250, 251, 1)' } : theme === 'Fabric' ? { fontFamily: 'Segoe UI', color: '#333333' } : { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n }\n return style;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font, themeFontStyle) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily || themeFontStyle.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function withInAreaBounds(x, y, areaBounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= areaBounds.x - width && x <= areaBounds.x + areaBounds.width + width && y >= areaBounds.y - height\n && y <= areaBounds.y + areaBounds.height + height);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, controlName) {\n if (controlName === void 0) { controlName = ''; }\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n if (controlName === 'RangeNavigator') {\n if ((arrowLocation.x - arrowPadding) > width / 2) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x) + ' ' + height);\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX - arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n if ((arrowLocation.x - arrowPadding) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (width) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (startX) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Plus':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent, themeStyle) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n if (parent) {\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable security/detect-object-injection */\n/* eslint-disable no-useless-escape */\n/* eslint-disable security/detect-non-literal-regexp */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation, animationMode } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption, withInAreaBounds } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"dashArray\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.highlightPadding = 3;\n this.areaMargin = 10;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n if (this.enableRTL) {\n this.element.setAttribute('dir', 'ltr');\n }\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.width) ? 1 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind' || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color || (this.theme === 'Fabric' || this.theme === 'Fluent' ? '#D2D0CE' : this.border.color)\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n if (!groupElement) {\n return null;\n }\n var x = ((this.enableRTL) ? this.elementSize.width - (size / 2) :\n (this.marginX * 2) + (size / 2)) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n var padding = 0;\n if (this.header.indexOf(' -1) {\n padding = this.header.split(//g).length + count;\n }\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : padding)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n if (!isNullOrUndefined(groupElement)) {\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.isFixed) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n rect = new Rect(location.x, location.y, width, height);\n }\n else if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n if (this.allowHighlight) {\n rect.x += isLeft ? this.highlightPadding : -(2 * this.highlightPadding);\n }\n }\n }\n if (this.header !== '') {\n var wrapPadding = 2;\n var padding = 0;\n var wrapHeader = this.isWrap ? this.wrappedText : this.header;\n if (this.isWrap && typeof (wrapHeader) === 'string' && (wrapHeader.indexOf('<') > -1 || wrapHeader.indexOf('>') > -1)) {\n var textArray = wrapHeader.split('
');\n wrapPadding = textArray.length;\n }\n if (this.header.indexOf(' -1) {\n padding = 5 * (this.header.split(//g).length - 1);\n }\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, font, this.themeStyle.textStyle).height +\n (this.marginY * wrapPadding) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : padding); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': this.theme === ('Material3' || 'Material3Dark') ? 0.2 : 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.controlName));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark'\n || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n var borderColor = ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.color) ? '#D2D0CE' : this.border.color;\n pathElement.setAttribute('stroke', borderColor);\n if (!isNullOrUndefined(this.border.dashArray)) {\n pathElement.setAttribute('stroke-dasharray', this.border.dashArray);\n }\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n if (this.revert) {\n this.inverted = !this.inverted;\n this.revert = false;\n }\n }\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n this.isWrap = false;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled && !this.enableRTL ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font, this.themeStyle.textStyle).width\n + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '12px';\n var fontWeight = '400';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n var contentWidth = [];\n var textHeight = 0;\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n // Condition to resolve the text size issue only in chart.\n if (this.controlName === 'Chart' && parseFloat(fontSize) < parseFloat(font.size)) {\n textHeight = (parseFloat(font.size) - parseFloat(fontSize));\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (textHeight + this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? this.controlName === 'RangeNavigator' ? 5 : 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, font.color || this.themeStyle.tooltipBoldLabel, groupElement, this.themeStyle.textStyle);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (this.isTextWrap && this.header !== this.formattedText[k] && this.formattedText[k].indexOf(' this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n textCollection = this.formattedText[k].match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n }\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height - (textHeight !== 0 ? ((textHeight / this.markerSize) * (parseFloat(font.size) / this.markerSize)) : 0));\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, (this.enableRTL) ? '
\\u200E:
' : '
\\u200E:
')\n .split('
');\n if (this.enableRTL && lines.length > 0 && textCollection[i].match(/:/g)) {\n lines[0] = lines[0].trim();\n lines.reverse();\n }\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (this.enableRTL && line !== '' && this.isRTLText(line)) {\n line = line.concat('\\u200E');\n }\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n if (this.header.indexOf(' -1 && k !== 0) {\n headerSpace += this.header.split(//g).length;\n }\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = '600';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === '600' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = (this.header === this.formattedText[k]) ? font.size : this.textStyle.size;\n tspanElement.style.fontWeight = (this.header === this.formattedText[k] && (this.header.indexOf('') || this.header.indexOf('')) === -1) ? (this.textStyle.fontWeight || '600') : line.indexOf('') > -1 || line.indexOf('') > -1 ? 'bold' : (this.textStyle.fontWeight || font.fontWeight);\n var textFont = extend({}, this.textStyle, null, true)[key];\n textFont.fontWeight = tspanElement.style.fontWeight;\n isRow = false;\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, textFont, this.themeStyle.textStyle).width;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n contentWidth.push(subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = '600';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font, this.themeStyle.textStyle).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n this.renderContentRTL(parentElement, isHeader, markerSize + markerPadding, contentWidth);\n };\n Tooltip.prototype.renderContentRTL = function (textElement, isHeader, markerSize, contentWidth) {\n if (this.enableRTL) {\n var tspanElement = void 0;\n var contentWidthIndex = isHeader ? 1 : 0;\n for (var i = 0; i < textElement.childNodes.length; i++) {\n tspanElement = (textElement.childNodes[i]);\n if ((!isHeader || i > 0) && !isNullOrUndefined(tspanElement.getAttribute('x'))) {\n tspanElement.setAttribute('x', (this.elementSize.width - (markerSize + contentWidth[contentWidthIndex])).toString());\n contentWidthIndex++;\n }\n }\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = this.isRTLText(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() !== '[object HTMLUnknownElement]';\n };\n Tooltip.prototype.isRTLText = function (tooltipContent) {\n return /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipContent);\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = void 0;\n if (this.controlName === 'Chart' && this.shared) {\n for (var i = 0; i < this.data.length; i++) {\n var sharedTemplateElement = this.templateFn(this.data[i], this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n if (i === 0) {\n templateElement = sharedTemplateElement;\n }\n else {\n templateElement[templateElement.length - 1].outerHTML += sharedTemplateElement[0].outerHTML;\n }\n }\n }\n else {\n templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n }\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.y + tooltipRect.height > bounds.y + bounds.height) {\n tooltipRect.y = Math.max((bounds.y + bounds.height) - (tooltipRect.height + 2 * this.padding), bounds.y);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x = (bounds.x + this.location.x) - (tooltipRect.width + 4 * this.padding);\n }\n if (tooltipRect.x < bounds.x) {\n tooltipRect.x = bounds.x;\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n this.outOfBounds = false;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * (this.allowHighlight ? this.highlightPadding : this.padding)) -\n this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if ((location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n if (((location.x + width > boundsX + bounds.width) && location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width && !(this.controlName === 'Progressbar')) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (arrowLocation.x + this.arrowPadding > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding;\n tipLocation.x = width - this.rx - this.arrowPadding;\n }\n if (arrowLocation.x - this.arrowPadding < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if (((bounds.x + bounds.width) - (location.x + arrowLocation.x)) < this.areaMargin + this.arrowPadding ||\n (location.x + arrowLocation.x) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n this.revert = true;\n location = new TooltipLocation(symbolLocation.x + markerHeight + clipX, symbolLocation.y + clipY - this.elementSize.height / 2 - (this.padding));\n tipLocation.x = arrowLocation.x = 0;\n tipLocation.y = arrowLocation.y = height / 2;\n if ((location.x + this.arrowPadding + width > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > boundsX + bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (this.arrowPadding + width);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + markerHeight + clipX;\n }\n if (location.y <= boundsY) {\n tipLocation.y -= (boundsY - location.y);\n arrowLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= bounds.height + boundsY) {\n arrowLocation.y += ((location.y + height) - (bounds.height + boundsY));\n tipLocation.y += ((location.y + height) - (bounds.height + boundsY));\n location.y -= ((location.y + height) - (bounds.height + boundsY));\n }\n if ((this.arrowPadding) + arrowLocation.y > height - this.ry) {\n arrowLocation.y = height - this.arrowPadding - this.ry;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = (this.arrowPadding) + this.ry;\n tipLocation.y = 0;\n }\n }\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = tipLocation.y = this.ry + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if ((location.y + arrowLocation.y) < this.areaMargin + this.arrowPadding ||\n ((bounds.y + bounds.height) - (location.y + arrowLocation.y)) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n location = new TooltipLocation(symbolLocation.x + clipX - this.padding - this.elementSize.width / 2, symbolLocation.y + clipY - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding);\n this.revert = true;\n tipLocation.x = arrowLocation.x = width / 2;\n tipLocation.y = arrowLocation.y = 0;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + markerHeight + clipY;\n }\n if (location.y + this.arrowPadding + height > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n tipLocation.x -= (boundsX - location.x);\n arrowLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > bounds.width + boundsX) {\n arrowLocation.x += ((location.x + width) - (bounds.width + boundsX));\n tipLocation.x += ((location.x + width) - (bounds.width + boundsX));\n location.x -= ((location.x + width) - (bounds.width + boundsX));\n }\n if ((this.arrowPadding) + arrowLocation.x > width - this.rx) {\n tipLocation.x = width - this.rx - (this.arrowPadding);\n arrowLocation.x = width - this.rx - (this.arrowPadding);\n }\n if (arrowLocation.x - (this.arrowPadding) < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + (this.arrowPadding);\n }\n }\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: (this.duration === 0 && animationMode === 'Enable') ? 300 : this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n if ((_this.controlName === 'Chart' && _this.shared) && !_this.enableRTL) {\n tooltipDiv.style.transition = isBlazor() ? 'transform 0.3s' : 'transform 0.1s';\n tooltipDiv.style.transform = 'translate(' + (x + currenDiff * (rect.x - x)) + 'px,' + (y + currenDiff * (rect.y - y)) + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n tooltipDiv.style.transform = _this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n if ((this.controlName === 'Chart' && this.shared && !this.crosshair) && !this.enableRTL) {\n tooltipDiv.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n tooltipDiv.style.transform = this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n else {\n this.templateFn = templateComplier(this.template);\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n var tooltipDiv = getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (tooltipGroup_1.nodeType !== Node.ELEMENT_NODE) {\n tooltipGroup_1 = tooltipElement.firstElementChild;\n }\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity'));\n opacity_1 = !isNullOrUndefined(opacity_1) ? opacity_1 : 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n tooltipDiv.style.transition = '';\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"crosshair\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '12px', fontWeight: null, color: null, fontStyle: 'Normal', fontFamily: null }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: null, width: null }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(7)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isFixed\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"controlName\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableRTL\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"allowHighlight\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\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","/* eslint-disable @typescript-eslint/tslint/config */\n/* eslint-disable max-len */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Animation, animationMode, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { appendChildElement, redrawElement, pathAnimation, valueToCoefficient, getVisiblePoints, colorNameToHex, checkColorFormat, applyZLight } from '../../common/utils/helper';\nimport { getAnimationFunction, getPoint, getMinPointsDelta } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\n/**\n * Column Series Base\n */\nvar ColumnBase = /** @class */ (function () {\n function ColumnBase() {\n }\n ColumnBase.prototype.getSideBySideInfo = function (series) {\n if (series.chart.enableSideBySidePlacement && !series.position) {\n this.getSideBySidePositions(series);\n }\n if (series.columnWidthInPixel) {\n return new DoubleRange(0, 0);\n }\n var position = series.type === 'Histogram' || !series.chart.enableSideBySidePlacement ? 0 : series.position;\n var rectCount = series.type === 'Histogram' || !series.chart.enableSideBySidePlacement ? 1 : series.rectCount;\n series.isRectSeries = true;\n var visibleSeries = series.chart.visibleSeries;\n var seriesSpacing = series.chart.enableSideBySidePlacement ? series.columnSpacing : 0; // Column Spacing\n var pointSpacing = (series.columnWidth === null || isNaN(+series.columnWidth)) ? ((series.type === 'Histogram') ? 1 : 0.7) :\n Math.min(series.columnWidth, 1); // Column width\n var minimumPointDelta = getMinPointsDelta(series.xAxis, visibleSeries);\n var width = minimumPointDelta * pointSpacing;\n var radius;\n var location = (position) / rectCount - 0.5;\n var doubleRange = new DoubleRange(location, location + (1 / rectCount));\n if (!(isNaN(doubleRange.start) || isNaN(doubleRange.end))) {\n if (series.groupName && series.type.indexOf('Stacking') === -1) {\n var mainColumnWidth_1 = 0.7;\n series.chart.series.filter(function (series) { if (series.columnWidth > mainColumnWidth_1) {\n mainColumnWidth_1 = series.columnWidth;\n } });\n var mainWidth = minimumPointDelta * mainColumnWidth_1;\n var mainDoubleRange = new DoubleRange(doubleRange.start * mainWidth, doubleRange.end * mainWidth);\n var difference = ((mainDoubleRange.delta) - (doubleRange.end * width - doubleRange.start * width)) / 2;\n doubleRange = new DoubleRange(mainDoubleRange.start + difference, mainDoubleRange.end - difference);\n }\n else {\n doubleRange = new DoubleRange(doubleRange.start * width, doubleRange.end * width);\n }\n radius = seriesSpacing * doubleRange.delta;\n doubleRange = new DoubleRange(doubleRange.start + radius / 2, doubleRange.end - radius / 2);\n }\n return doubleRange;\n };\n /**\n * To get the rect values.\n *\n * @returns {Rect} rect region values\n * @private\n */\n ColumnBase.prototype.getRectangle = function (x1, y1, x2, y2, series) {\n var point1 = getPoint(x1, y1, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n var point2 = getPoint(x2, y2, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n return new Rect(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.abs(point2.x - point1.x), Math.abs(point2.y - point1.y));\n };\n /**\n * To draw the cylindrical shape for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawCylinder = function (options, element, cylinderSeriesOption, rect, series) {\n var width = rect.width;\n var height = rect.height;\n if (series.chart.enableCanvas) {\n var ctx = series.chart.canvasRender.ctx;\n var canvasCtx = ctx;\n ctx.save();\n var gradientColor = colorNameToHex(options.fill);\n var x = rect.x + series.clipRect.x;\n var y = rect.y + series.clipRect.y;\n var arc = 2 * Math.PI + 0.1;\n var rx = void 0, ry = void 0, cx1 = void 0, cx2 = void 0, cy1 = void 0, cy2 = void 0, x1 = void 0, x2 = void 0, y1 = void 0, y2 = void 0, cx = void 0, cy = void 0, xl = void 0, yl = void 0, xPos = void 0, yPos = void 0, step = void 0, rxt = void 0, ryt = void 0;\n var gx1 = 0;\n var gx2 = 0;\n var gy1 = 0;\n var gy2 = 0;\n var ini = 0;\n ctx.fillStyle = applyZLight(gradientColor, 0.9);\n ctx.lineWidth = 0;\n ctx.strokeStyle = applyZLight(gradientColor, 0.9);\n ctx.globalAlpha = options.opacity;\n if (cylinderSeriesOption.isColumn) {\n gx1 = x;\n gx2 = width + x;\n rx = width / 2;\n ry = rx / 4;\n cx2 = cx1 = x + rx;\n y2 = cy1 = y - ry;\n x2 = x;\n x1 = x + width;\n cy2 = y1 = y + height - ry;\n step = Math.PI;\n rxt = -rx;\n ryt = ry;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n y2 = cy1 = y + ry;\n }\n }\n }\n else {\n gy2 = height + y;\n gy1 = y;\n ry = height / 2;\n rx = ry / 4;\n x2 = cx1 = x + rx;\n x1 = cx2 = x + width + rx;\n y1 = y + height;\n y2 = y;\n cy2 = cy1 = y + ry;\n ini = Math.PI / 2;\n step = Math.PI * 1.5;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n x1 = cx2 = x + width - rx;\n }\n }\n ry = -ry;\n rx = -rx;\n rxt = rx;\n ryt = -ry;\n }\n var color = applyZLight(gradientColor, 0.7);\n var gradient = ctx.createLinearGradient(gx1, gy1, gx2, gy2);\n gradient.addColorStop(0, gradientColor);\n gradient.addColorStop(0.3, color);\n gradient.addColorStop(0.7, color);\n gradient.addColorStop(1, gradientColor);\n for (var j = 1; j <= 4; j++) {\n var i = 0;\n if (j < 4) {\n ctx.beginPath();\n }\n if (j % 2 === 0) {\n cx = cx2;\n cy = cy2;\n xl = x2;\n yl = y2;\n }\n else {\n cx = cx1;\n cy = cy1;\n xl = x1;\n yl = y1;\n }\n if (j === 4) {\n rx = rxt;\n ry = ryt;\n ctx.fillStyle = gradient;\n }\n if (j > 2) {\n i = ini;\n arc = step;\n }\n for (; i <= arc; i += 0.1) {\n xPos = cx - (rx * Math.cos(i));\n yPos = cy + (ry * Math.sin(i));\n if (i === 0) {\n ctx.moveTo(xPos, yPos);\n }\n else {\n ctx.lineTo(xPos, yPos);\n }\n }\n if (j > 2) {\n ctx.lineTo(xl, yl);\n }\n if (j !== 3) {\n ctx.stroke();\n ctx.fill();\n }\n }\n if (options.id.indexOf('Series') >= 0) {\n ctx.clip();\n ctx.restore();\n ctx = canvasCtx;\n }\n }\n else {\n var chart = series.chart;\n var x = rect.x;\n var y = rect.y;\n var id = options.id;\n var gradientColor = options.fill;\n var fillColor = gradientColor;\n var format = checkColorFormat(gradientColor);\n if (!format) {\n gradientColor = colorNameToHex(gradientColor);\n }\n var AEx = 0;\n var AEy = 0;\n var LX = 0;\n var LY = 0;\n var GX = 0;\n var GY = 0;\n var X = void 0, Y = void 0, X1 = void 0, Y1 = void 0, X2 = void 0, Y2 = void 0, rx = void 0, ry = void 0;\n var i = 2;\n if (cylinderSeriesOption.isColumn) {\n rx = width / 2;\n ry = rx / 4;\n X = X1 = x;\n Y = ry < y ? y - ry : cylinderSeriesOption.stacking ? y + ry : (y - ry);\n Y1 = Y;\n AEx = 2 * rx;\n LY = ry < y ? height : (height < 2 * ry ? height : cylinderSeriesOption.stacking ? height - (2 * ry) : height);\n X2 = X;\n Y2 = ry < y ? Y + height : (height < Y ? height + Y : cylinderSeriesOption.stacking ? height + (y - ry) : height + Y);\n GX = 100;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n Y = Y1 = y + ry;\n LY = height < rx / 2 ? height : height - rx / 2;\n }\n }\n }\n else {\n ry = height / 2;\n rx = ry / 4;\n Y = Y1 = y;\n X = X1 = Math.abs(x - rx);\n AEy = 2 * ry;\n LX = width;\n X2 = X + width;\n Y2 = Y;\n GY = 100;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n X2 = (X + width - rx * 2);\n LX = width - rx * 2;\n }\n }\n }\n remove(this.element);\n while (i--) {\n options.d = 'M' + X.toString() + ',' + Y.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,0 ' + AEx.toString() + ',' + AEy.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,0 ' + (-1 * AEx).toString() + ',' + (-1 * AEy).toString();\n options.id = id + '_' + 'Region_' + i;\n options.fill = applyZLight(gradientColor, 0.9);\n if (i % 2 === 0 && series.type !== 'StackingBar100' && series.type !== 'StackingBar' && series.type !== 'Bar') {\n options.fill = options.fill + '10';\n }\n this.element = chart.renderer.drawPath(this.options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n appendChildElement(series.chart.enableCanvas, series.seriesElement, this.element, chart.redraw);\n X = X2;\n Y = Y2;\n }\n options.d = 'M' + X1.toString() + ',' + Y1.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,0 ' + AEx.toString() + ',' + AEy.toString() + 'l' + LX.toString() + ' ' + LY.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,1 ' + (-1 * AEx).toString() + ',' + (-1 * AEy).toString() + ' z';\n options.id = id + '_' + 'Region_2';\n options.fill = applyZLight(gradientColor, 0.7);\n var optiong = void 0;\n if (fillColor.indexOf('url') === -1) {\n if (!document.getElementById(id)) {\n optiong = { 'id': id, x1: '0%', y1: '0%', x2: GX.toString() + '%', y2: GY.toString() + '%' };\n var gradientElement = [{ colorStop: '0%', color: gradientColor }, { colorStop: '30%', color: applyZLight(gradientColor, 0.7) }, { colorStop: '70%', color: applyZLight(gradientColor, 0.7) }, { colorStop: '100%', color: gradientColor }];\n this.drawGradient(optiong, gradientElement, series);\n }\n options.fill = 'url(#' + optiong.id + ')';\n }\n this.element = chart.renderer.drawPath(this.options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n appendChildElement(series.chart.enableCanvas, series.seriesElement, this.element, chart.redraw);\n }\n };\n /**\n * To get the gradient of each points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawGradient = function (optiong, gradientElement, series) {\n var chart = series.chart;\n var defElement = chart.renderer.createDefs();\n var xmlns = 'http://www.w3.org/2000/svg';\n var linearGradientElement = document.createElementNS(xmlns, 'linearGradient');\n linearGradientElement.setAttribute('id', optiong.id);\n linearGradientElement.setAttribute('x1', optiong.x1);\n linearGradientElement.setAttribute('y1', optiong.y1);\n linearGradientElement.setAttribute('x2', optiong.x2);\n linearGradientElement.setAttribute('y2', optiong.y2);\n for (var i = 0; i < gradientElement.length; i++) {\n var stopElement = document.createElementNS(xmlns, 'stop');\n stopElement.setAttribute('offset', gradientElement[i].colorStop);\n stopElement.setAttribute('stop-color', gradientElement[i].color);\n stopElement.setAttribute('stop-opacity', '1');\n linearGradientElement.appendChild(stopElement);\n }\n series.seriesElement.appendChild(defElement);\n defElement.appendChild(linearGradientElement);\n };\n /**\n * To get the position of each series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.getSideBySidePositions = function (series) {\n var chart = series.chart;\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.findRectPosition(series.findSeriesCollection(columnItem, item, false));\n }\n }\n };\n ColumnBase.prototype.findRectPosition = function (seriesCollection) {\n var groupingValues = [];\n var vSeries = { rectCount: 0, position: null };\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n if (value.type.indexOf('Stacking') !== -1 || value.groupName !== '') {\n var groupName = value.type.indexOf('Stacking') !== -1 ? value.stackingGroup : value.type + value.groupName;\n if (groupName) {\n if (groupingValues[groupName] === undefined) {\n value.position = vSeries.rectCount;\n groupingValues[groupName] = vSeries.rectCount++;\n }\n else {\n value.position = groupingValues[groupName];\n }\n }\n else {\n if (vSeries.position === null) {\n value.position = vSeries.rectCount;\n vSeries.position = vSeries.rectCount++;\n }\n else {\n value.position = vSeries.position;\n }\n }\n }\n else {\n value.position = vSeries.rectCount++;\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n value.rectCount = vSeries.rectCount;\n }\n };\n /**\n * Updates the symbollocation for points\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateSymbolLocation = function (point, rect, series) {\n if (!series.chart.requireInvertedAxis) {\n this.updateXRegion(point, rect, series);\n }\n else {\n this.updateYRegion(point, rect, series);\n }\n if (series.type === 'Histogram') {\n point.minimum = +point.x - series.histogramValues.binWidth / 2;\n point.maximum = +point.x + series.histogramValues.binWidth / 2;\n }\n };\n /**\n * Update the region for the point.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateXRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isAxisInverse)) ? rect.y : (rect.y + rect.height)\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: rect.y + rect.height\n });\n }\n };\n /**\n * Update the region for the point in bar series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateYRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isAxisInverse)) ? rect.x + rect.width : rect.x,\n y: rect.y + rect.height / 2\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x,\n y: rect.y + rect.height / 2\n });\n }\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To get the marker region when Y value is 0\n *\n * @param {Points} point point\n * @param {rect} rect rect\n * @param {Series} series series\n */\n ColumnBase.prototype.getRegion = function (point, rect, series) {\n if (point.y === 0) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n }\n else {\n point.regions.push(rect);\n }\n };\n /**\n * To trigger the point rendering event.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.triggerEvent = function (series, point, fill, border) {\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, fill),\n border: series.setBorderColor(point, border)\n };\n series.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n return argsData;\n };\n /**\n * To draw the rectangle for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawRectangle = function (series, point, rect, argsData) {\n var chart = series.chart;\n var check = chart.requireInvertedAxis ? rect.height : rect.width;\n if (check <= 0) {\n return null;\n }\n var direction;\n if (point.y === 0) {\n // For 0 values corner radius will not calculate\n direction = this.calculateRoundedRectPath(rect, 0, 0, 0, 0);\n }\n else {\n direction = this.calculateRoundedRectPath(rect, series.cornerRadius.topLeft, series.cornerRadius.topRight, series.cornerRadius.bottomLeft, series.cornerRadius.bottomRight, chart.requireInvertedAxis);\n }\n var name = series.category === 'Indicator' ? chart.element.id + '_Indicator_' + series.index + '_' + series.name +\n '_Point_' + point.index : chart.element.id + '_Series_' + series.index + '_Point_' + point.index;\n var previousElement = redrawElement(chart.redraw, name);\n var previousDirection = previousElement ? previousElement.getAttribute('d') : '';\n this.options = new PathOption(name, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, (series.columnFacet === 'Cylinder') ? '' : direction);\n this.element = chart.renderer.drawPath(this.options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n switch (series.seriesType) {\n case 'XY':\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', point.x + ':' + point.yValue + ', ' + series.name);\n break;\n case 'HighLow':\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', point.x + ':' + point.high + ', ' + point.low + ', ' + series.name);\n break;\n }\n appendChildElement(series.chart.enableCanvas, series.seriesElement, this.element, chart.redraw);\n if (!series.chart.enableCanvas) {\n pathAnimation(this.element, (series.columnFacet === 'Cylinder') ? '' : direction, chart.redraw, previousDirection, chart.duration);\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animate = function (series) {\n var rectElements = series.seriesElement.childNodes;\n var count = series.category === 'Indicator' ? 0 : 1;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n if (!point.symbolLocations.length && !(series.type === 'BoxAndWhisker' && point.regions.length)) {\n continue;\n }\n if ((series.type === 'Column' || series.type === 'Bar' || series.type === 'StackingColumn' || series.type === 'StackingColumn100' || series.type === 'StackingBar' || series.type === 'StackingBar100') && series.columnFacet === 'Cylinder') {\n for (var j = 0; j < rectElements.length; j++) {\n this.animateRect(rectElements[j], series, point);\n }\n }\n else {\n this.animateRect(rectElements[count], series, point);\n count++;\n }\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animateRect = function (element, series, point) {\n var option = series.animation;\n var duration = series.chart.animated ? series.chart.duration : option.duration;\n var effect = getAnimationFunction('Linear');\n var isPlot = point.yValue < 0;\n var x;\n var y;\n var elementHeight = +point.regions[0].height;\n var elementWidth = +point.regions[0].width;\n var centerX;\n var centerY;\n if (!series.chart.requireInvertedAxis) {\n x = +point.regions[0].x;\n if (series.type.indexOf('Stacking') > -1) {\n y = (1 - valueToCoefficient(0, series.yAxis)) * (series.yAxis.rect.height);\n centerX = x;\n centerY = y;\n }\n else {\n y = +point.regions[0].y;\n centerY = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? y + elementHeight / 2 :\n (isPlot !== series.yAxis.isAxisInverse) ? y : y + elementHeight;\n centerX = isPlot ? x : x + elementWidth;\n }\n }\n else {\n y = +point.regions[0].y;\n if (series.type.indexOf('Stacking') > -1) {\n x = (valueToCoefficient(0, series.yAxis)) * series.yAxis.rect.width;\n centerX = x;\n centerY = y;\n }\n else {\n x = +point.regions[0].x;\n centerY = isPlot ? y : y + elementHeight;\n centerX = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? x + elementWidth / 2 :\n (isPlot !== series.yAxis.isAxisInverse) ? x + elementWidth : x;\n }\n }\n var value;\n if (!isNullOrUndefined(element)) {\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: (duration === 0 && animationMode === 'Enable') ? 1000 : duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n element.style.visibility = 'visible';\n if (!series.chart.requireInvertedAxis) {\n elementHeight = elementHeight ? elementHeight : 1;\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n else {\n elementWidth = elementWidth ? elementWidth : 1;\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n }\n },\n end: function () {\n element.setAttribute('transform', 'translate(0,0)');\n var seriesElement = series.seriesElement;\n if (element === seriesElement.lastElementChild || point.index === series.points.length - 1 ||\n (series.type === 'Waterfall' && element === seriesElement.children[seriesElement.childElementCount - 2])) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n if (series.type === 'Waterfall') {\n var rectElements = seriesElement.childNodes;\n for (var i = 0; i < rectElements.length; i++) {\n if (rectElements[i].id.indexOf('Connector') !== -1) {\n rectElements[i].style.visibility = 'visible';\n rectElements[i].setAttribute('transform', 'translate(0,0)');\n }\n }\n }\n }\n }\n });\n }\n };\n /**\n * To get rounded rect path direction.\n */\n ColumnBase.prototype.calculateRoundedRectPath = function (rect, topLeft, topRight, bottomLeft, bottomRight, inverted) {\n if (inverted === void 0) { inverted = false; }\n var halfValue = inverted ? rect.width / 2 : rect.height / 2;\n topLeft = Math.min(topLeft, halfValue);\n topRight = Math.min(topRight, halfValue);\n bottomLeft = Math.min(bottomLeft, halfValue);\n bottomRight = Math.min(bottomRight, halfValue);\n return 'M' + ' ' + rect.x + ' ' + (topLeft + rect.y) +\n ' Q ' + rect.x + ' ' + rect.y + ' ' + (rect.x + topLeft) + ' ' +\n rect.y + ' ' + 'L' + ' ' + (rect.x + rect.width - topRight) + ' ' + rect.y +\n ' Q ' + (rect.x + rect.width) + ' ' + rect.y + ' ' +\n (rect.x + rect.width) + ' ' + (rect.y + topRight) + ' ' + 'L ' +\n (rect.x + rect.width) + ' ' + (rect.y + rect.height - bottomRight)\n + ' Q ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' ' + (rect.x + rect.width - bottomRight) + ' ' +\n (rect.y + rect.height) + ' ' + 'L ' + (rect.x + bottomLeft) + ' ' + (rect.y + rect.height) + ' Q ' + rect.x + ' ' +\n (rect.y + rect.height) + ' ' + rect.x + ' ' + (rect.y + rect.height - bottomLeft) + ' ' + 'L' + ' ' + rect.x + ' ' +\n (topLeft + rect.y) + ' ' + 'Z';\n };\n return ColumnBase;\n}());\nexport { ColumnBase };\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","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint, sort } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * To get the data on mouse move.\n *\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n *\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.commonXvalues = [];\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n *\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isAxisInverse ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isAxisInverse ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible)) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks whether the region contains a point\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * To check the point in threshold region for column and bar series\n *\n * @param {number} x X coordinate\n * @param {number} y Y coodinate\n * @param {Points} point point\n * @param {Rect} rect point rect region\n * @param {Series} series series\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isAxisInverse;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * @private\n */\n ChartData.prototype.getClosest = function (series, value, xvalues) {\n var closest;\n var data;\n var xData = xvalues ? xvalues : series.xData;\n var xLength = xData.length;\n var leftSideNearest = 0.5;\n var rightSideNearest = 0.5;\n if (series.xAxis.valueType === 'DateTime' && series.points.length === 1) {\n leftSideNearest = series.xAxis.visibleRange.min;\n rightSideNearest = series.xAxis.visibleRange.max;\n for (var index = 0; index < series.chart.visibleSeries.length; index++) {\n var visibleSeries = series.chart.visibleSeries[index];\n if (visibleSeries.xMin >= leftSideNearest && visibleSeries.xMin < series.xMin) {\n leftSideNearest = visibleSeries.xMin + 0.1;\n }\n if (visibleSeries.xMax <= rightSideNearest && visibleSeries.xMax > series.xMax) {\n rightSideNearest = visibleSeries.xMax - 0.1;\n }\n if (visibleSeries.points.length > 1) {\n if (visibleSeries.xMax >= leftSideNearest && visibleSeries.xMax < series.xMin) {\n leftSideNearest = visibleSeries.xMax + 0.1;\n }\n if (visibleSeries.xMin <= rightSideNearest && visibleSeries.xMin > series.xMax) {\n rightSideNearest = visibleSeries.xMin - 0.1;\n }\n }\n }\n if (leftSideNearest !== series.xAxis.visibleRange.min) {\n leftSideNearest = Math.abs(series.xMin - leftSideNearest) / 2;\n }\n if (rightSideNearest !== series.xAxis.visibleRange.max) {\n rightSideNearest = Math.abs(series.xMax - rightSideNearest) / 2;\n }\n }\n if (value >= series.xMin - leftSideNearest && value <= series.xMax + rightSideNearest) {\n for (var i = 0; i < xLength; i++) {\n data = xData[i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n var isDataExist = series.xData.indexOf(closest) !== -1;\n if (isDataExist) {\n return closest;\n }\n else {\n return null;\n }\n };\n ChartData.prototype.binarySearch = function (target, list) {\n var first = 0;\n var last = list.length;\n var position = -1;\n var found = false;\n var middle;\n while (found === false && first <= last) {\n middle = Math.floor((first + last) / 2);\n if (list[middle].xValue === target) {\n found = true;\n position = middle;\n }\n else if (list[middle].xValue > target) {\n last = middle - 1;\n }\n else {\n first = middle + 1;\n }\n }\n return position !== -1 ? list[position] : null;\n };\n ChartData.prototype.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\n if (chart.mouseX <= rect.x + rect.width && chart.mouseX >= rect.x) {\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n }\n var closest = this.getClosest(series, value, xvalues);\n var point = ((closest || closest === 0) && series.points.length > 0) ? this.binarySearch(closest, sort(series.points, ['xValue'])) : null;\n if (point && point.visible) {\n if (!(this.chart.chartAreaType === 'Cartesian' && ((series.category == 'Indicator' && series.name == 'Histogram') ||\n (point.symbolLocations && point.symbolLocations.length > 0 && point.symbolLocations[0].x >= 0 && point.symbolLocations[0].x <= rect.width)))) {\n return null;\n }\n return new PointData(point, series);\n }\n return null;\n };\n /**\n * Merge all visible series X values for shared tooltip (EJ2-47072)\n *\n * @param visibleSeries\n * @private\n */\n ChartData.prototype.mergeXvalues = function (visibleSeries) {\n if (visibleSeries.length && (!this.commonXvalues.length || (this.commonXvalues.length !== visibleSeries[0].xData.length))) {\n this.commonXvalues = visibleSeries[0].xData;\n for (var index = 1; index < visibleSeries.length; index++) {\n this.commonXvalues = this.getDistinctValues(this.commonXvalues, visibleSeries[index].xData);\n }\n }\n return this.commonXvalues;\n };\n ChartData.prototype.commonXValue = function (visibleSeries) {\n var commonXValues = [];\n for (var j = 0; j < visibleSeries.length; j++) {\n for (var i = 0; (visibleSeries[j].points && i < visibleSeries[j].points.length); i++) {\n var point = visibleSeries[j].points[i];\n if (point && (point.index === 0 || point.index === visibleSeries[j].points.length - 1 ||\n (point.symbolLocations && point.symbolLocations.length > 0))) {\n commonXValues.push(point.xValue);\n }\n }\n }\n return commonXValues;\n };\n ChartData.prototype.getDistinctValues = function (first, second) {\n if (first === void 0) { first = []; }\n if (second === void 0) { second = []; }\n var intial = {};\n var result = [];\n var index;\n for (index = 0; index < first.length; index++) {\n var temp = first[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n for (index = 0; index < second.length; index++) {\n var temp = second[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n return result;\n };\n return ChartData;\n}());\nexport { ChartData };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var TabItemsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-tabitems';\n }\n }\n});\nexport var TabItemsPlugin = {\n name: 'e-tabitems',\n install: function (Vue) {\n Vue.component(TabItemsPlugin.name, TabItemsDirective);\n }\n};\n/**\n * 'e-tabitem' directive represent a item of the Vue Tab\n * It must be contained in a Tab component(`ejs-tab`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var TabItemDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-tabitem';\n }\n }\n});\nexport var TabItemPlugin = {\n name: 'e-tabitem',\n install: function (Vue) {\n Vue.component(TabItemPlugin.name, TabItemDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { TabItemsDirective, TabItemDirective, TabItemsPlugin, TabItemPlugin } from './items.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowDragAndDrop', 'animation', 'clearTemplates', 'cssClass', 'dragArea', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'headerPlacement', 'height', 'heightAdjustMode', 'items', 'loadOn', 'locale', 'overflowMode', 'reorderActiveTab', 'scrollStep', 'selectedItem', 'showCloseButton', 'width', 'added', 'adding', 'created', 'destroyed', 'dragged', 'dragging', 'onDragStart', 'removed', 'removing', 'selected', 'selecting'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the VueJS Tab Component.\n * ```html\n * \n * ```\n */\nexport var TabComponent = vueDefineComponent({\n name: 'TabComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Tab({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-tabitems\": \"e-tabitem\" },\n tagNameMapper: { \"e-tabitems\": \"e-items\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n addTab: function (items, index) {\n return this.ej2Instances.addTab(items, index);\n },\n disable: function (value) {\n return this.ej2Instances.disable(value);\n },\n enableTab: function (index, value) {\n return this.ej2Instances.enableTab(index, value);\n },\n getItemIndex: function (tabItemId) {\n return this.ej2Instances.getItemIndex(tabItemId);\n },\n hideTab: function (index, value) {\n return this.ej2Instances.hideTab(index, value);\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshActiveTab: function () {\n return this.ej2Instances.refreshActiveTab();\n },\n refreshActiveTabBorder: function () {\n return this.ej2Instances.refreshActiveTabBorder();\n },\n removeTab: function (index) {\n return this.ej2Instances.removeTab(index);\n },\n select: function (args, event) {\n return this.ej2Instances.select(args, event);\n },\n }\n});\nexport var TabPlugin = {\n name: 'ejs-tab',\n install: function (Vue) {\n Vue.component(TabPlugin.name, TabComponent);\n Vue.component(TabItemPlugin.name, TabItemDirective);\n Vue.component(TabItemsPlugin.name, TabItemsDirective);\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { getPoint, appendClipElement, pathAnimation } from '../../common/utils/helper';\nimport { LineBase } from './line-base';\nimport { RectOption, getElement } from '../../common/utils/helper';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Base class for multi colored series\n */\nvar MultiColoredSeries = /** @class */ (function (_super) {\n __extends(MultiColoredSeries, _super);\n function MultiColoredSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To Generate the area path direction.\n *\n * @param {number} xValue xValue\n * @param {number} yValue yValue\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n * @param {ChartLocation} startPoint startPoint\n * @param {string} startPath startPath\n */\n MultiColoredSeries.prototype.getAreaPathDirection = function (xValue, yValue, series, isInverted, getPointLocation, startPoint, startPath) {\n var direction = '';\n var firstPoint;\n if (startPoint === null) {\n firstPoint = getPointLocation(xValue, yValue, series.xAxis, series.yAxis, isInverted, series);\n direction += (startPath + ' ' + (firstPoint.x) + ' ' + (firstPoint.y) + ' ');\n }\n return direction;\n };\n /**\n * To Generate the empty point direction.\n *\n * @param {ChartLocation} firstPoint firstPoint\n * @param {ChartLocation} secondPoint secondPoint\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n */\n MultiColoredSeries.prototype.getAreaEmptyDirection = function (firstPoint, secondPoint, series, isInverted, getPointLocation) {\n var direction = '';\n direction += this.getAreaPathDirection(firstPoint.x, firstPoint.y, series, isInverted, getPointLocation, null, 'L');\n direction += this.getAreaPathDirection(secondPoint.x, secondPoint.y, series, isInverted, getPointLocation, null, 'L');\n return direction;\n };\n /**\n * To set point color.\n */\n MultiColoredSeries.prototype.setPointColor = function (currentPoint, previous, series, isXSegment, segments) {\n if (series.pointColorMapping === '') {\n var segment = void 0;\n var value = void 0;\n for (var i = 0; i < segments.length; i++) {\n segment = segments[i];\n value = isXSegment ? currentPoint.xValue : currentPoint.yValue;\n if (value <= this.getAxisValue(segment.value, isXSegment ? series.xAxis : series.yAxis, series.chart) ||\n (!segment.value && segment.value !== 0)) {\n currentPoint.interior = segment.color;\n break;\n }\n }\n if (currentPoint.interior == null) {\n currentPoint.interior = series.interior;\n }\n return false;\n }\n else {\n if (previous) {\n return series.setPointColor(currentPoint, series.interior) !== series.setPointColor(previous, series.interior);\n }\n else {\n return false;\n }\n }\n };\n MultiColoredSeries.prototype.sortSegments = function (series, chartSegments) {\n var _this = this;\n var axis = series.segmentAxis === 'X' ? series.xAxis : series.yAxis;\n var segments = [].concat(chartSegments);\n return segments.sort(function (a, b) {\n return _this.getAxisValue(a.value, axis, series.chart) - _this.getAxisValue(b.value, axis, series.chart);\n });\n };\n /**\n * Segment calculation performed here.\n *\n * @param {Series} series series\n * @param {PathOption[]} options options\n * @param {ChartSegmentModel[]} segments chartSegments\n */\n MultiColoredSeries.prototype.applySegmentAxis = function (series, options, segments) {\n var _this = this;\n if (series.pointColorMapping !== '') {\n options.map(function (option) {\n _this.appendLinePath(option, series, '');\n });\n return null;\n }\n var isXSegment = series.segmentAxis === 'X';\n var axis = isXSegment ? series.xAxis : series.yAxis;\n var chart = series.chart;\n var segment;\n this.includeSegment(segments, axis, series, segments.length);\n var length = segments.length;\n var value;\n var clipPath;\n var attributeOptions;\n var areaBorderCount = 0;\n var _loop_1 = function (index) {\n segment = segments[index];\n value = this_1.getAxisValue(segment.value, axis, series.chart);\n clipPath = this_1.createClipRect(index ? this_1.getAxisValue(segments[index - 1].value, axis, series.chart)\n : axis.visibleRange.min, value, series, index, isXSegment);\n if (clipPath) {\n options.map(function (option) {\n areaBorderCount += 1;\n attributeOptions = {\n 'clip-path': clipPath,\n 'stroke-dasharray': segment.dashArray,\n 'opacity': option.opacity,\n 'stroke': series.type.indexOf('Line') > -1 ? segment.color || series.interior : option['stroke'],\n 'stroke-width': option['stroke-width'],\n 'fill': series.type.indexOf('Line') > -1 ? 'none' : segment.color || series.interior,\n 'id': option.id + '_Segment_' + index,\n 'd': option.d\n };\n if (areaBorderCount % 2 === 0 && _this.chart.multiColoredAreaSeriesModule && series.border.color !== 'transparent' && attributeOptions['stroke-width'] !== 0) {\n attributeOptions.fill = 'transparent';\n }\n pathAnimation(getElement(attributeOptions.id), attributeOptions.d, chart.redraw);\n series.pathElement = chart.renderer.drawPath(attributeOptions);\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(chart.renderer.drawPath(attributeOptions));\n }\n });\n }\n };\n var this_1 = this;\n for (var index = 0; index < length; index++) {\n _loop_1(index);\n }\n };\n MultiColoredSeries.prototype.includeSegment = function (segments, axis, series, length) {\n if (length <= 0) {\n segments.push({ value: axis.visibleRange.max, color: series.interior });\n return null;\n }\n if (this.getAxisValue(segments[length - 1].value, axis, series.chart) < axis.visibleRange.max) {\n segments.push({ value: axis.visibleRange.max, color: series.interior });\n }\n };\n /**\n * To create clip rect for segment axis.\n *\n * @param {number} startValue startValue\n * @param {number} endValue endValue\n * @param {Series} series series\n * @param {number} index index\n * @param {boolean} isX isX\n */\n MultiColoredSeries.prototype.createClipRect = function (startValue, endValue, series, index, isX) {\n var isRequired = series.chart.requireInvertedAxis;\n var startPointLocation = getPoint(isX ? startValue : series.xAxis.visibleRange.min, isX ? series.yAxis.visibleRange.max : endValue, series.xAxis, series.yAxis, isRequired);\n var endPointLocation = getPoint(isX ? endValue : series.xAxis.visibleRange.max, isX ? series.yAxis.visibleRange.min : startValue, series.xAxis, series.yAxis, isRequired);\n endPointLocation = isRequired ?\n [startPointLocation, startPointLocation = endPointLocation][0] : endPointLocation;\n var options;\n if (((series.xAxis.isInversed || series.xAxis.isAxisInverse) ? startPointLocation.x - endPointLocation.x > 0 : endPointLocation.x - startPointLocation.x > 0) &&\n (series.yAxis.isInversed ? startPointLocation.y - endPointLocation.y > 0 : endPointLocation.y - startPointLocation.y > 0)) {\n options = new RectOption(series.chart.element.id + '_ChartSegment' + series.index + 'ClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: (series.xAxis.isInversed || series.xAxis.isAxisInverse) ? endPointLocation.x : startPointLocation.x,\n y: series.yAxis.isInversed ? endPointLocation.y : startPointLocation.y,\n width: (series.xAxis.isInversed || series.xAxis.isAxisInverse) ? startPointLocation.x - endPointLocation.x : endPointLocation.x - startPointLocation.x,\n height: series.yAxis.isInversed ? startPointLocation.y - endPointLocation.y : endPointLocation.y - startPointLocation.y\n });\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(appendClipElement(series.chart.redraw, options, series.chart.renderer));\n }\n return 'url(#' + series.chart.element.id + '_ChartSegment' + series.index + 'ClipRect_' + index + ')';\n }\n return null;\n };\n /**\n * To get exact value from segment value.\n *\n * @param {Object} segmentValue segmentValue\n * @param {Axis} axis axis\n * @param {Chart} chart chart\n */\n MultiColoredSeries.prototype.getAxisValue = function (segmentValue, axis, chart) {\n if (segmentValue === null) {\n segmentValue = axis.visibleRange.max;\n }\n if (axis.valueType === 'DateTime') {\n var option = { skeleton: 'full', type: 'dateTime' };\n return Date.parse(chart.intl.getDateParser(option)(chart.intl.getDateFormat(option)(new Date(DataUtil.parse.parseJson({ val: segmentValue }).val))));\n }\n else if (axis.valueType.indexOf('Category') > -1) {\n var xValue = axis.valueType === 'DateTimeCategory' ?\n (segmentValue.getTime()).toString() :\n segmentValue;\n return (axis.labels.indexOf(xValue) < 0) ? +segmentValue : axis.labels.indexOf(xValue);\n }\n else {\n return +segmentValue;\n }\n };\n return MultiColoredSeries;\n}(LineBase));\nexport { MultiColoredSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getPoint } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { MultiColoredSeries } from './multi-colored-base';\n/**\n * `MultiColoredLineSeries` used to render the line series with multi color.\n */\nvar MultiColoredLineSeries = /** @class */ (function (_super) {\n __extends(MultiColoredLineSeries, _super);\n function MultiColoredLineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Line Series.\n *\n * @returns {void}\n * @private\n */\n MultiColoredLineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var previous = null;\n var startPoint = 'M';\n var visiblePoints = this.enableComplexProperty(series);\n var options = [];\n var direction = '';\n var lastPoint;\n var segmentPoint = null;\n var segments = this.sortSegments(series, series.segments);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n lastPoint = point;\n direction += this.getLineDirection(previous, point, series, isInverted, getPoint, startPoint);\n if (previous != null) {\n if (this.setPointColor(point, previous, series, series.segmentAxis === 'X', segments)) {\n options.push(new PathOption(series.chart.element.id + '_Series_' + series.index + '_Point_' + previous.index, 'none', series.width, series.setPointColor(previous, series.interior), series.opacity, series.dashArray, direction));\n startPoint = 'M';\n direction = '';\n }\n else {\n startPoint = 'L';\n }\n }\n else {\n if (this.setPointColor(point, segmentPoint, series, series.segmentAxis === 'X', segments) && direction !== '') {\n options.push(new PathOption(series.chart.element.id + '_Series_' + series.index + '_Point_' + segmentPoint.index, 'none', series.width, series.setPointColor(segmentPoint, series.interior), series.opacity, series.dashArray, direction));\n startPoint = 'M';\n direction = '';\n }\n }\n previous = point;\n segmentPoint = point;\n this.storePointLocation(point, series, isInverted, getPoint);\n }\n else {\n previous = (series.emptyPointSettings.mode === 'Drop') ? previous : null;\n startPoint = (series.emptyPointSettings.mode === 'Drop') ? startPoint : 'M';\n point.symbolLocations = [];\n }\n }\n if (direction !== '') {\n options.push(new PathOption(series.chart.element.id + '_Series_' + series.index, 'none', series.width, series.setPointColor(lastPoint, series.interior), series.opacity, series.dashArray, direction));\n }\n this.applySegmentAxis(series, options, segments);\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n MultiColoredLineSeries.prototype.doAnimation = function (series) {\n this.doLinearAnimation(series, series.animation);\n };\n /**\n * Get module name.\n */\n MultiColoredLineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'MultiColoredLineSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n MultiColoredLineSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return MultiColoredLineSeries;\n}(MultiColoredSeries));\nexport { MultiColoredLineSeries };\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","/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var chartDoubleClick = 'chartDoubleClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'bulletChartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\n","//! 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getActualDesiredIntervalsCount, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn } from '../../common/utils/helper';\nimport { extend, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NiceInterval } from '../axis/axis-helper';\n/**\n * `Category` module is used to render category axis.\n */\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n /**\n * Constructor for the category module.\n *\n * @private\n */\n function Category(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n */\n Category.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Category.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n // axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n if (!axis.interval) {\n axis.actualRange.interval = Math.max(1, Math.floor(axis.doubleRange.delta / getActualDesiredIntervalsCount(size, axis)));\n }\n else {\n axis.actualRange.interval = Math.ceil(axis.interval);\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n axis.actualRange.delta = axis.doubleRange.delta;\n };\n /**\n * Padding for the axis.\n *\n * @private\n */\n Category.prototype.applyRangePadding = function (axis, size) {\n var isColumn;\n axis.series.forEach(function (element) {\n if (!isColumn) {\n isColumn = element.type.indexOf('Column') > -1 && !(axis.zoomFactor < 1 || axis.zoomPosition > 0) && isNullOrUndefined(axis.minimum) && isNullOrUndefined(axis.maximum);\n }\n });\n var ticks = ((axis.labelPlacement === 'BetweenTicks' || isColumn) && !this.chart.stockChart && this.chart.chartAreaType !== 'PolarRadar') ? 0.5 : 0;\n if (ticks > 0) {\n axis.actualRange.min -= ticks;\n axis.actualRange.max += ticks;\n }\n else {\n axis.actualRange.max += axis.actualRange.max ? 0 : 0.5;\n }\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n axis.actualRange.delta = axis.doubleRange.delta;\n this.calculateVisibleRange(size, axis);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Category.prototype.calculateVisibleLabels = function (axis) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n axis.visibleRange.interval = axis.visibleRange.interval < 1 ? 1 : axis.visibleRange.interval;\n var tempInterval = Math.ceil(axis.visibleRange.min);\n var labelStyle;\n if (axis.zoomFactor < 1 || axis.zoomPosition > 0) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var position;\n axis.startLabel = axis.labels[Math.round(axis.visibleRange.min)];\n axis.endLabel = axis.labels[Math.floor(axis.visibleRange.max)];\n for (; tempInterval <= axis.visibleRange.max; tempInterval += axis.visibleRange.interval) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange) && axis.labels.length > 0) {\n position = Math.round(tempInterval);\n triggerLabelRender(this.chart, position, axis.labels[position] ? axis.labels[position].toString() : '', labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Get module name\n */\n Category.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Category';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n Category.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Category;\n}(NiceInterval));\nexport { Category };\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","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/**\n * StripLine src\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { valueToCoefficient, textElement, RectOption, appendChildElement, appendClipElement, withIn, getElement, ImageOption } from '../../common/utils/helper';\nimport { measureText, TextOption, PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * `StripLine` module is used to render the stripLine in chart.\n */\nvar StripLine = /** @class */ (function () {\n function StripLine() {\n }\n /**\n * Finding x, y, width and height of the strip line\n *\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} seriesClipRect seriesClipRect\n * @param {number} startValue startValue\n * @param {Axis} segmentAxis segmentAxis\n * @param {Chart} chart chart instance\n */\n StripLine.prototype.measureStripLine = function (axis, stripline, seriesClipRect, startValue, segmentAxis, chart) {\n var actualStart;\n var actualEnd;\n var orientation = axis.orientation;\n var isDateTimeAxis = axis.valueType === 'DateTime';\n if (stripline.isRepeat && stripline.size !== null) {\n actualStart = startValue;\n actualEnd = null;\n }\n else {\n if (axis.valueType === 'DateTimeCategory') {\n var start = stripline.start;\n var end = stripline.end;\n actualStart = (start != null && typeof start !== 'number') ?\n axis.labels.indexOf(this.dateToMilliSeconds(start, chart).toString()) : start;\n actualEnd = (end != null && typeof end !== 'number') ?\n axis.labels.indexOf(this.dateToMilliSeconds(end, chart).toString()) : end;\n }\n else {\n actualStart = stripline.start === null ? null : isDateTimeAxis && this.isCoreDate(stripline.start) ?\n this.dateToMilliSeconds(stripline.start, chart) : +stripline.start;\n actualEnd = stripline.end === null ? null : isDateTimeAxis && this.isCoreDate(stripline.start) ?\n this.dateToMilliSeconds(stripline.end, chart) : +stripline.end;\n }\n }\n var rect = this.getFromTovalue(actualStart, actualEnd, stripline.size, stripline.startFromAxis, axis, stripline);\n var height = (orientation === 'Vertical') ? (rect.to - rect.from) * axis.rect.height : seriesClipRect.height;\n var width = (orientation === 'Horizontal') ? (rect.to - rect.from) * axis.rect.width : seriesClipRect.width;\n var x = (orientation === 'Vertical') ? seriesClipRect.x : ((rect.from * axis.rect.width) + axis.rect.x);\n var y = (orientation === 'Horizontal') ? seriesClipRect.y : (axis.rect.y + axis.rect.height -\n ((stripline.sizeType === 'Pixel' ? rect.from : rect.to) * axis.rect.height));\n if (stripline.isSegmented && stripline.segmentStart != null && stripline.segmentEnd != null && stripline.sizeType !== 'Pixel') {\n var start = isDateTimeAxis && this.isCoreDate(stripline.segmentStart) ?\n this.dateToMilliSeconds(stripline.segmentStart, chart) : +stripline.segmentStart;\n var end = isDateTimeAxis && this.isCoreDate(stripline.segmentEnd) ?\n this.dateToMilliSeconds(stripline.segmentEnd, chart) : +stripline.segmentEnd;\n var segRect = this.getFromTovalue(start, end, null, null, segmentAxis, stripline);\n if (segmentAxis.orientation === 'Vertical') {\n y = (segmentAxis.rect.y + segmentAxis.rect.height -\n (segRect.to * segmentAxis.rect.height));\n height = (segRect.to - segRect.from) * segmentAxis.rect.height;\n }\n else {\n x = ((segRect.from * segmentAxis.rect.width) + segmentAxis.rect.x);\n width = (segRect.to - segRect.from) * segmentAxis.rect.width;\n }\n }\n if ((height !== 0 && width !== 0) || (stripline.sizeType === 'Pixel' && (stripline.start !== null || stripline.startFromAxis))) {\n return new Rect(x, y, width, height);\n }\n return new Rect(0, 0, 0, 0);\n };\n /**\n * To get from to value from start, end, size, start from axis\n *\n * @param {number} start start\n * @param {number} end end\n * @param {number} size size\n * @param {boolean} startFromAxis startFromAxis\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n */\n StripLine.prototype.getFromTovalue = function (start, end, size, startFromAxis, axis, stripline) {\n var from = (!stripline.isRepeat && startFromAxis) ? axis.visibleRange.min : start;\n if (axis.valueType === 'Double' && size !== null && !startFromAxis && stripline.start == null) {\n from += size;\n }\n var to = this.getToValue(Math.max(start, isNullOrUndefined(end) ? start : end), from, size, axis, end, stripline);\n from = this.findValue(from, axis);\n to = this.findValue(to, axis);\n return { from: valueToCoefficient(axis.isAxisInverse ? to : from, axis), to: valueToCoefficient(axis.isAxisInverse ? from : to, axis) };\n };\n /**\n * Finding end value of the strip line\n *\n * @param {number} to to\n * @param {number} from from\n * @param {number} size size\n * @param {Axis} axis axis\n * @param {number} end end\n * @param {StripLineSettingsModel} stripline stripline\n */\n StripLine.prototype.getToValue = function (to, from, size, axis, end, stripline) {\n var sizeType = stripline.sizeType;\n var isEnd = (end === null);\n if (axis.valueType === 'DateTime') {\n var fromValue = new Date(from);\n if (sizeType === 'Auto') {\n sizeType = axis.actualIntervalType;\n size *= axis.visibleRange.interval;\n }\n switch (sizeType) {\n case 'Years':\n return (isEnd ? new Date(fromValue.setFullYear(fromValue.getFullYear() + size)) : to);\n case 'Months':\n return (isEnd ? new Date(fromValue.setMonth(fromValue.getMonth() + size)) : to);\n case 'Days':\n return (isEnd ? new Date(fromValue.setDate(fromValue.getDate() + size)) : to);\n case 'Hours':\n return (isEnd ? new Date(fromValue.setHours(fromValue.getHours() + size)) : to);\n case 'Minutes':\n return (isEnd ? new Date(fromValue.setMinutes(fromValue.getMinutes() + size)) : to);\n case 'Seconds':\n return (isEnd ? new Date(fromValue.setSeconds(fromValue.getSeconds() + size)) : to);\n default:\n return from;\n }\n }\n else {\n return stripline.sizeType === 'Pixel' ? from : (isEnd ? (from + size) : to);\n }\n };\n /**\n * To check the strip line values within range\n *\n * @param {number} value value\n * @param {Axis} axis axis\n */\n StripLine.prototype.findValue = function (value, axis) {\n if (value < axis.visibleRange.min) {\n value = axis.visibleRange.min;\n }\n else if (value > axis.visibleRange.max) {\n value = axis.visibleRange.max;\n }\n return value;\n };\n /**\n * Date parse\n *\n * @param {Date} value date\n * @param {Chart} chart chart instance\n * @returns {Date} parsed date\n */\n StripLine.prototype.dateParse = function (value, chart) {\n var dateParser = chart.intl.getDateParser({ skeleton: 'full', type: 'dateTime' });\n var dateFormatter = chart.intl.getDateFormat({ skeleton: 'full', type: 'dateTime' });\n return new Date((Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: value }).val))))));\n };\n /**\n * To render strip lines based start and end.\n *\n * @param {Chart} chart chart\n * @param {ZIndex} position position\n * @param {Axis[]} axes axes\n * @private\n */\n StripLine.prototype.renderStripLine = function (chart, position, axes) {\n var id = chart.element.id + '_stripline_' + position + '_';\n var seriesClipRect = chart.chartAxisLayoutPanel.seriesClipRect;\n var end = 0;\n var limit = 0;\n var startValue = 0;\n var segmentAxis = null;\n var range;\n var options = new RectOption(id + 'ClipRect', 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: seriesClipRect.x, y: seriesClipRect.y,\n width: seriesClipRect.width,\n height: seriesClipRect.height\n });\n var striplineGroup = chart.renderer.createGroup({\n id: id + 'collections',\n 'clip-path': 'url(#' + id + 'ClipRect' + ')'\n });\n if (!chart.enableCanvas) {\n striplineGroup.appendChild(appendClipElement(chart.redraw, options, chart.renderer));\n }\n for (var _i = 0, axes_1 = axes; _i < axes_1.length; _i++) {\n var axis = axes_1[_i];\n var count = 0;\n for (var _a = 0, _b = axis.stripLines; _a < _b.length; _a++) {\n var stripline = _b[_a];\n if (stripline.visible && stripline.zIndex === position) {\n if (stripline.isSegmented && stripline.segmentStart != null && stripline.segmentEnd != null &&\n stripline.sizeType !== 'Pixel') {\n segmentAxis = this.getSegmentAxis(axes, axis, stripline);\n }\n if (stripline.isRepeat && stripline.repeatEvery != null && stripline.size !== null && stripline.sizeType !== 'Pixel') {\n limit = (stripline.repeatUntil != null) ? ((axis.valueType === 'DateTime') ?\n this.dateToMilliSeconds(stripline.repeatUntil, chart) : +stripline.repeatUntil) : axis.actualRange.max;\n startValue = axis.valueType === 'DateTime' && this.isCoreDate(stripline.start) ?\n this.dateToMilliSeconds(stripline.start, chart) : stripline.start;\n if ((stripline.startFromAxis && axis.valueType === 'DateTime' && stripline.sizeType === 'Auto') ||\n (stripline.start < axis.visibleRange.min)) {\n startValue = axis.visibleLabels[0].value === axis.visibleRange.min ? axis.visibleRange.min :\n axis.visibleLabels[0].value - (axis.valueType === 'DateTime' ? axis.dateTimeInterval :\n axis.visibleRange.interval);\n }\n startValue = stripline.startFromAxis && axis.valueType !== 'DateTime' ? axis.visibleRange.min : startValue;\n while (startValue < limit) {\n end = (startValue + (axis.valueType === 'DateTime' ? axis.dateTimeInterval * +stripline.size : stripline.size));\n range = withIn(end, axis.visibleRange);\n if ((startValue >= axis.visibleRange.min && startValue < axis.visibleRange.max) || range) {\n this.renderStripLineElement(axis, stripline, seriesClipRect, id, striplineGroup, chart, startValue, segmentAxis, count);\n }\n count++;\n startValue = this.getStartValue(axis, stripline, startValue, chart);\n }\n }\n else {\n this.renderStripLineElement(axis, stripline, seriesClipRect, id, striplineGroup, chart, null, segmentAxis, count);\n count++;\n }\n }\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, striplineGroup, chart.redraw);\n };\n /**\n * To convert the C# date to js date\n *\n * @param {string | number | Object} value date value\n * @returns {boolean} returns true if datetime value type is string(for asp platform)\n */\n StripLine.prototype.isCoreDate = function (value) {\n return typeof value === 'string' ? true : false;\n };\n /**\n * To get the total milli seconds\n *\n * @param {Date | number | Object} value date value\n * @param {Chart} chart chart instance\n * @returns {number} returns milliseconds\n */\n StripLine.prototype.dateToMilliSeconds = function (value, chart) {\n return this.dateParse(value, chart).getTime();\n };\n /**\n * To draw the single line strip line\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n */\n StripLine.prototype.renderPath = function (stripline, rect, id, parent, chart, axis) {\n var element = getElement(id);\n var direction = element ? element.getAttribute('d') : '';\n var strokeWidth = stripline.size;\n var d = (axis.orientation === 'Vertical') ? ('M ' + rect.x + ' ' + rect.y + ' ' + 'L ' + (rect.x + rect.width)\n + ' ' + rect.y) :\n ('M ' + rect.x + ' ' + rect.y + ' ' + 'L ' + rect.x + ' ' + (rect.y + rect.height));\n if (stripline.sizeType !== 'Pixel') {\n d = (axis.orientation === 'Vertical') ? ('M ' + rect.x + ' ' + (rect.y + (rect.height / 2)) + ' ' + 'L ' + (rect.x + rect.width)\n + ' ' + (rect.y + (rect.height / 2))) :\n ('M ' + (rect.x + (rect.width / 2)) + ' ' + rect.y + ' ' + 'L ' + (rect.x + (rect.width / 2)) + ' ' + (rect.y + rect.height));\n strokeWidth = axis.orientation === 'Vertical' ? rect.height : rect.width;\n }\n appendChildElement(chart.enableCanvas, parent, chart.renderer.drawPath(new PathOption(id, 'none', strokeWidth, stripline.color, stripline.opacity, stripline.dashArray, d)), chart.redraw, true, 'x', 'y', null, direction, true);\n };\n /**\n * To draw the rectangle\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n */\n StripLine.prototype.renderRectangle = function (stripline, rect, id, parent, chart) {\n var element = getElement(id);\n var previousRect = element ? new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n appendChildElement(chart.enableCanvas, parent, chart.renderer.drawRectangle(new RectOption(id, 'none', stripline.border, stripline.opacity, rect, 0, 0, '', null)), chart.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n };\n /**\n * To draw the Image\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n */\n StripLine.prototype.drawImage = function (stripline, rect, id, parent, chart) {\n if (stripline.sizeType === 'Pixel') {\n rect.width = rect.width ? rect.width : stripline.size;\n rect.height = rect.height ? rect.height : stripline.size;\n }\n var image = new ImageOption(rect.height, rect.width, stripline.imageUrl, rect.x, rect.y, id, 'visible', 'none');\n var htmlObject = chart.renderer.drawImage(image);\n appendChildElement(chart.enableCanvas, parent, htmlObject, chart.redraw, true, 'x', 'y', null, null, true, true);\n };\n /**\n * To create the text on strip line\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n */\n StripLine.prototype.renderText = function (stripline, rect, id, parent, chart, axis) {\n var textSize = measureText(stripline.text, stripline.textStyle, chart.themeStyle.stripLineLabelFont);\n var isRotationNull = (stripline.rotation === null);\n var textMid = isRotationNull ? 3 * (textSize.height / 8) : 0;\n var ty = rect.y + (rect.height / 2) + textMid;\n var rotation = isRotationNull ? ((axis.orientation === 'Vertical') ? 0 : -90) : stripline.rotation;\n var tx = rect.x + (rect.width / 2);\n var anchor;\n var padding = 5;\n if (axis.orientation === 'Horizontal') {\n tx = this.getTextStart(tx + (textMid * this.factor(stripline.horizontalAlignment)), rect.width, stripline.horizontalAlignment);\n ty = this.getTextStart(ty - textMid, rect.height, stripline.verticalAlignment) +\n (stripline.verticalAlignment === 'Start' && !isRotationNull ? (textSize.height / 4) : 0);\n anchor = isRotationNull ? this.invertAlignment(stripline.verticalAlignment) : stripline.horizontalAlignment;\n anchor = tx - textSize.width / 2 < axis.rect.x ? 'Start' : tx + textSize.width / 2 > axis.rect.width ? 'End' : anchor;\n }\n else {\n tx = this.getTextStart(tx, rect.width, stripline.horizontalAlignment);\n ty = this.getTextStart(ty + (textMid * this.factor(stripline.verticalAlignment)) - padding, rect.height, stripline.verticalAlignment);\n anchor = stripline.horizontalAlignment;\n anchor = chart.enableRtl ? (anchor === 'End' ? 'Start' : anchor === 'Start' ? 'End' : anchor) : anchor;\n }\n textElement(chart.renderer, new TextOption(id, tx, ty, anchor, stripline.text, 'rotate(' + rotation + ' ' + tx + ',' + ty + ')', 'middle'), stripline.textStyle, stripline.textStyle.color || chart.themeStyle.stripLineLabelFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.stripLineLabelFont);\n };\n StripLine.prototype.invertAlignment = function (anchor) {\n switch (anchor) {\n case 'Start':\n anchor = 'End';\n break;\n case 'End':\n anchor = 'Start';\n break;\n }\n return anchor;\n };\n /**\n * To find the next value of the recurrence strip line\n *\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n * @param {number} startValue startValue\n * @param {Chart} chart chart instance\n * @returns {number} next start value of the recurrence strip line\n */\n StripLine.prototype.getStartValue = function (axis, stripline, startValue, chart) {\n if (axis.valueType === 'DateTime') {\n return (this.getToValue(null, startValue, +stripline.repeatEvery, axis, null, stripline));\n }\n else {\n return startValue + (+stripline.repeatEvery);\n }\n };\n /**\n * Finding segment axis for segmented strip line\n *\n * @param {Axis[]} axes axes collection\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n */\n StripLine.prototype.getSegmentAxis = function (axes, axis, stripline) {\n var segment;\n if (stripline.segmentAxisName == null) {\n return (axis.orientation === 'Horizontal') ? axes[1] : axes[0];\n }\n else {\n for (var i = 0; i < axes.length; i++) {\n if (stripline.segmentAxisName === axes[i].name) {\n segment = axes[i];\n }\n }\n return segment;\n }\n };\n /**\n * To render strip line on chart\n *\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} seriesClipRect seriesClipRect\n * @param {string} id id\n * @param {Element} striplineGroup striplineGroup\n * @param {Chart} chart chart\n * @param {number} startValue startValue\n * @param {Axis} segmentAxis segmentAxis\n * @param {number} count count\n */\n StripLine.prototype.renderStripLineElement = function (axis, stripline, seriesClipRect, id, striplineGroup, chart, startValue, segmentAxis, count) {\n var rect = this.measureStripLine(axis, stripline, seriesClipRect, startValue, segmentAxis, chart);\n if (stripline.imageUrl) {\n this.drawImage(stripline, rect, id + 'rect_' + axis.name + '_' + count, striplineGroup, chart);\n }\n else {\n this.renderPath(stripline, rect, id + (stripline.sizeType === 'Pixel' ? 'path_' : 'rect_') + axis.name + '_' + count, striplineGroup, chart, axis);\n var pixelRect = new Rect(axis.orientation === 'Horizontal' ? (rect.x - stripline.size / 2) : rect.x, axis.orientation === 'Vertical' ? (rect.y - stripline.size / 2) : rect.y, rect.width ? rect.width : stripline.size, rect.height ? rect.height : stripline.size);\n this.renderRectangle(stripline, stripline.sizeType === 'Pixel' ? pixelRect : rect, id + 'border_' + axis.name + '_' + count, striplineGroup, chart);\n }\n if (stripline.text !== '') {\n this.renderText(stripline, rect, id + 'text_' + axis.name + '_' + count, striplineGroup, chart, axis);\n }\n };\n /**\n * To find the factor of the text\n *\n * @param {Anchor} anchor text anchor\n */\n StripLine.prototype.factor = function (anchor) {\n var factor = 0;\n switch (anchor) {\n case 'Start':\n factor = 1;\n break;\n case 'End':\n factor = -1;\n break;\n }\n return factor;\n };\n /**\n * To find the start value of the text\n *\n * @param {number} xy xy values\n * @param {number} size text size\n * @param {Anchor} textAlignment text alignment\n */\n StripLine.prototype.getTextStart = function (xy, size, textAlignment) {\n var padding = 5;\n switch (textAlignment) {\n case 'Start':\n xy = xy - (size / 2) + padding;\n break;\n case 'End':\n xy = xy + (size / 2) - padding;\n break;\n }\n return xy;\n };\n /**\n * To get the module name for `StripLine`.\n *\n * @private\n */\n StripLine.prototype.getModuleName = function () {\n return 'StripLine';\n };\n /**\n * To destroy the `StripLine` module.\n *\n * @private\n */\n StripLine.prototype.destroy = function () {\n // destroy peform here\n };\n return StripLine;\n}());\nexport { StripLine };\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: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en 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","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[parseInt(i.toString(), 10)];\n options.index = startIndex;\n if (gObj.childGrid || gObj.detailTemplate) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[parseInt(startIndex.toString(), 10)]) {\n options.isExpand = gObj.expandedRows[parseInt(startIndex.toString(), 10)].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[parseInt(i.toString(), 10)].dataSource) ?\n new DataManager(fColumns[parseInt(i.toString(), 10)].dataSource.result) :\n fColumns[parseInt(i.toString(), 10)].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[parseInt(j.toString(), 10)].field] = e[parseInt(j.toString(), 10)].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[parseInt(i.toString(), 10)] = new Row({});\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[parseInt(i.toString(), 10)].commands) {\n rows = this.appendGridCells(columns[parseInt(i.toString(), 10)], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[parseInt(i.toString(), 10)].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[parseInt(i.toString(), 10)], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length - 1; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[parseInt(i.toString(), 10)], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[\"\" + key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[\"\" + exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[parseInt(i.toString(), 10)]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n if (typeof args.column.format === 'string') {\n args.column.format = { format: args.column.format };\n }\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat(args.column.format)(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'dateonly' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n format = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\nimport { defaultCurrencyCode } from '@syncfusion/ej2-base';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.grpFooterTemplates = [];\n this.footerTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if ((grid.childGrid || grid.detailTemplate) && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob, isChild: this.isChild,\n grpFooterTemplates: this.grpFooterTemplates\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[\"\" + cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[\"\" + isBlb];\n this.isChild = args[\"\" + Child];\n this.grpFooterTemplates = args['grpFooterTemplates'];\n if (args[\"\" + csv]) {\n this.isCsvExport = args[\"\" + csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[\"\" + isMultiEx], args[\"\" + workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : { gridInstance: this.parent });\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (gObj.allowGrouping && gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length) {\n if (isNullOrUndefined(exportProperties)) {\n exportProperties = { hierarchyExportMode: 'All' };\n }\n else {\n exportProperties.hierarchyExportMode = exportProperties.hierarchyExportMode || 'All';\n }\n }\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.sheet.images = workbook.worksheets[0].images;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, defaultCurrencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, defaultCurrencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n this.capTemplate = undefined;\n this.footerTemplates = [];\n this.grpFooterTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords) && !this.parent.groupSettings.enableLazyLoading) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[parseInt(c.toString(), 10)];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[parseInt(styleIndex.toString(), 10)], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if ((row.isExpand || this.isChild) && (!isNullOrUndefined(gObj.childGrid) || !isNullOrUndefined(gObj.detailTemplate))) {\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n else {\n var args = { parentRow: row, row: excelRow, value: {}, action: 'excelexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n excelRow.childRows = this.processDetailTemplate(args);\n }\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n var rows = [];\n var templateRowHeight;\n var detailIndent = 2;\n var detailCellIndex;\n if (templateData.value.columnHeader || templateData.value.rows) {\n var processCell_1 = function (currentCell, isHeader) {\n var cell = {};\n if (isNullOrUndefined(currentCell.index)) {\n currentCell.index = detailCellIndex;\n detailCellIndex++;\n }\n cell.index = currentCell.index + detailIndent;\n if (!isNullOrUndefined(currentCell.value)) {\n cell.value = currentCell.value;\n }\n if (!isNullOrUndefined(currentCell.colSpan)) {\n cell.colSpan = currentCell.colSpan;\n }\n if (!isNullOrUndefined(currentCell.rowSpan)) {\n cell.rowSpan = currentCell.rowSpan;\n }\n if (isHeader) {\n cell.style = _this.getHeaderThemeStyle(_this.theme);\n }\n else {\n cell.style = _this.getRecordThemeStyle(_this.theme);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n fontColor: currentCell.style.fontColor,\n fontName: currentCell.style.fontName,\n fontSize: currentCell.style.fontSize,\n hAlign: currentCell.style.excelHAlign,\n vAlign: currentCell.style.excelVAlign,\n rotation: currentCell.style.excelRotation,\n bold: currentCell.style.bold,\n indent: currentCell.style.indent,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n backColor: currentCell.style.backColor,\n wrapText: currentCell.style.wrapText,\n borders: currentCell.style.excelBorders,\n numberFormat: currentCell.style.excelNumberFormat,\n type: currentCell.style.excelType,\n strikeThrough: currentCell.style.strikeThrough\n };\n cell.style = _this.mergeOptions(cellStyle, cell.style);\n }\n if (!isNullOrUndefined(currentCell.image) && !isNullOrUndefined(currentCell.image.base64)) {\n if (currentCell.rowSpan > 1) {\n _this.setImage(currentCell, cell.index);\n }\n else {\n templateRowHeight = _this.setImage(currentCell, cell.index);\n if (currentCell.image.height && currentCell.value !== '') {\n templateRowHeight += 30;\n }\n }\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n cell.hyperlink = { target: currentCell.hyperLink.target };\n cell.value = currentCell.hyperLink.displayText;\n }\n return cell;\n };\n var processRow = function (currentRow, isHeader) {\n var excelDetailCells = [];\n detailCellIndex = 0;\n for (var j = 0; j < currentRow.cells.length; j++) {\n var currentCell = currentRow.cells[parseInt(j.toString(), 10)];\n var detailCell = processCell_1(currentCell, isHeader);\n excelDetailCells.push(detailCell);\n }\n var row = { index: _this.rowLength++, cells: excelDetailCells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n };\n if (templateData.value.columnHeader) {\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], true);\n }\n }\n if (templateData.value.rows) {\n for (var i = 0; i < templateData.value.rows.length; i++) {\n processRow(templateData.value.rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n else if (templateData.value.image) {\n templateRowHeight = this.setImage(templateData.value, detailIndent);\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n }\n else if (templateData.value.text) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n value: templateData.value.text,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n else if (templateData.value.hyperLink) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: 2,\n hyperlink: { target: templateData.value.hyperLink.target },\n value: templateData.value.hyperLink.displayText,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = {\n outlineLevel: 1, isCollapsed: !templateData.parentRow.isExpand, isHidden: !templateData.parentRow.isExpand\n };\n }\n return rows;\n };\n ExcelExport.prototype.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\n }\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n var columnsDetails = {};\n if (!isNullOrUndefined(cell.attributes.index)) {\n columnsDetails = this.parent.getColumnByIndex(cell.attributes.index);\n }\n if (cell.cellType === CellType.DetailFooterIntent || columnsDetails.type === 'checkbox') {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell,\n cell: cell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n if (this.groupedColLength < 8 && this.groupedColLength > 0 && !(gObj.groupSettings.enableLazyLoading && isNullOrUndefined(excelRows[excelRows.length - 1][\"\" + dummyGrouping]))) {\n var level = excelRows[excelRows.length - 1][\"\" + dummyGrouping][\"\" + dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (gObj, cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n return !isNullOrUndefined(txt) ? (txt) : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[parseInt(col.toString(), 10)], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n if (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[parseInt(row.toString(), 10)];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[parseInt(cellId.toString(), 10)];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[parseInt(row.toString(), 10)];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type === 'dateonly' ? 'date' : format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type === 'dateonly' ? 'date' : col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto' && !gObj.childGridLevel) {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\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","//! 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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TradingGroupAlertsReportTemplate.vue?vue&type=style&index=0&id=a7d59d24&prod&lang=css\"","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\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 // eslint-disable-next-line\n basicISOString = /^\\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 if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\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","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nexport var properties = ['isLazyUpdate', 'plugins', 'checked', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'htmlAttributes', 'indeterminate', 'label', 'labelPosition', 'locale', 'name', 'value', 'change', 'created'];\nexport var modelProps = ['checked', 'indeterminate'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS CheckBox Component\n * ```html\n * \n * ```\n */\nexport var CheckBoxComponent = vueDefineComponent({\n name: 'CheckBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new CheckBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n click: function () {\n return this.ej2Instances.click();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n }\n});\nexport var CheckBoxPlugin = {\n name: 'ejs-checkbox',\n install: function (Vue) {\n Vue.component(CheckBoxPlugin.name, CheckBoxComponent);\n }\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ATGReportTabs.vue?vue&type=style&index=1&id=685fdc5e&prod&lang=css\"","import { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n *\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (dataQuery) {\n var _this = this;\n if (this.dataManager.ready) {\n var dataManagerDeferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(dataQuery).then(function (result) {\n dataManagerDeferred_1.resolve(result);\n });\n }).catch(function (e) { dataManagerDeferred_1.reject(e); });\n return dataManagerDeferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(dataQuery);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","//! 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","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren, addStickyColumnPosition } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell', attrs: { role: 'columnheader' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : ''\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n break;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n if (!isNullOrUndefined(column.filterTemplate)) {\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.focus();\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.classList.add('e-input-focus');\n }\n else if (!isNullOrUndefined(this.dlgDiv.querySelector('.e-flmenu-input'))) {\n this.dlgDiv.querySelector('.e-flmenu-input').focus();\n this.dlgDiv.querySelector('.e-flmenu-input').parentElement.classList.add('e-input-focus');\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.focusedMenuItem = null;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.tabIndex = li.classList.contains('e-disabled') ? -1 : 0;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n }\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyUp, this);\n EventHandler.add(this.dlg, 'keydown', this.keyDown, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n }\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyUp);\n EventHandler.remove(this.dlg, 'keydown', this.keyDown);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if ((this.options.isResponsiveFilter || Browser.isDevice)\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.focusNextOrPrevElement = function (e, focusableElements, focusClassName) {\n var nextIndex = (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var focusClass = nextElement.classList.contains('e-chk-hidden') ? 'e-chkfocus' : focusClassName;\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : parentsUntil(nextElement, 'e-menu-item');\n this.excelSetFocus(target, focusClass);\n }\n };\n ExcelFilterBase.prototype.keyUp = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n var focusClass = e.target.classList.contains('e-chk-hidden') ? 'e-chkfocus' : 'e-menufocus';\n var target = e.target.classList.contains('e-menu-item')\n ? parentsUntil(e.target, 'e-menu-item') : parentsUntil(e.target, 'e-ftrchk');\n this.excelSetFocus(target, focusClass);\n }\n else if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey) {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n this.focusNextOrPrevElement(e, focusableElements, 'e-menufocus');\n }\n else if ((e.key === 'Enter' || e.code === 'ArrowRight') && e.target.classList.contains('e-menu-item')) {\n e.preventDefault();\n e.target.click();\n if (e.target.classList.contains('e-submenu')) {\n this.hoverHandler(e);\n this.menuObj.element.querySelector('.e-menu-item').focus();\n this.excelSetFocus(parentsUntil(this.menuObj.element.querySelector('.e-menu-item'), 'e-menu-item'), 'e-focused');\n this.focusedMenuItem = this.menuObj.element.querySelector('.e-menu-item');\n }\n }\n };\n ExcelFilterBase.prototype.keyDown = function (e) {\n //prevented up and down arrow key press default functionality to prevent the browser scroll when performing keyboard navigation in excel filter element.\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n };\n ExcelFilterBase.prototype.excelSetFocus = function (elem, className) {\n var prevElem = document.querySelector('.' + className);\n if (prevElem) {\n prevElem.classList.remove(className);\n }\n if (elem) {\n elem.classList.add(className);\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n EventHandler.remove(this.menuObj.element, 'keydown', this.contextKeyDownHandler);\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n EventHandler.add(this.menuObj.element, 'keydown', this.contextKeyDownHandler, this);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.contextKeyDownHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n e.preventDefault();\n var focusableElements = Array.from(this.menuObj.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n // Focus the next / previous context menu item\n this.focusNextOrPrevElement(e, focusableElements, 'e-focused');\n }\n else if (e.key === 'ArrowLeft' || e.key === 'Escape') {\n e.preventDefault();\n this.menuObj.close();\n this.focusedMenuItem = null;\n document.querySelector('.e-submenu.e-menu-item').classList.remove('e-selected');\n document.querySelector('.e-submenu.e-menu-item').focus();\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.closeDialog();\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: true,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var rows = [].slice.call(_this.dlgObj.element.querySelectorAll('table.e-xlfl-table tr.e-xlfl-fields'));\n for (var i = 0; i < rows.length; i++) {\n var valInput = rows[i].children[1].querySelector('.e-control');\n var dropDownList = rows[i]\n .querySelector('.e-dropdownlist.e-control')['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (valInput && !isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields', attrs: { role: 'row' } });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n var valInput = args.element.closest('.e-xlfl-fields').children[1].querySelector('.e-control');\n var dropDownList = args.element['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate', attrs: { role: 'row' } });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil, addFixedColumnBorder, applyStickyLeftRightPosition } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e)) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar', attrs: { role: 'row' } });\n var row = this.generateRow();\n row.data = this.values;\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n if (this.element.querySelectorAll('.e-leftfreeze').length &&\n (this.element.querySelectorAll('.e-indentcell').length || this.element.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = this.element.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n addFixedColumnBorder(this.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n if (rowdrag.classList.contains('e-leftfreeze')) {\n rowdrag.className = 'e-dragheadercell e-mastercell e-leftfreeze';\n }\n else {\n rowdrag.className = 'e-filterbarcell e-mastercell';\n }\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n Filter.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator, col.isForeignKey);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @param {boolean} isForeignColumn - Defines whether it is a foreign key column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator, isForeignColumn) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName, isForeignColumn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if ((this.filterSettings.type === 'CheckBox' || this.filterSettings.type === 'Excel')) {\n this.filterSettings.columns = (this.actualData.length <= 1) ? this.checkboxPrevFilterObject :\n this.checkboxFilterObject;\n this.actualPredicate[this.column.field] = this.filterSettings.columns;\n var col_1 = this.parent.getColumnByField(this.column.field);\n var iconClass = this.parent.showColumnMenu && col_1.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(this.column.field)\n .querySelector(iconClass);\n if (this.checkboxPrevFilterObject.length === 0) {\n filterIconElement.classList.remove('e-filtered');\n }\n else {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.isresetFocus = false;\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal',\n parentTotalDataCount: gObj.getDataModule().isRemote() && gObj.allowPaging ? gObj.pagerModule.pagerObj.totalRecordsCount :\n gObj.getDataModule().isRemote() ? gObj.totalDataRecordsCount : gObj.getFilteredRecords().length,\n parentCurrentViewDataCount: gObj.currentViewData.length,\n parentFilteredLocalRecords: !gObj.getDataModule().isRemote() ? gObj.getFilteredRecords() : []\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n if (!isNullOrUndefined(this.column)) {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(field);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n }\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar' && !parentsUntil(e.target, 'e-toolbar')\n && isNullOrUndefined(this.parent.element.querySelector('.e-filter-popup'))) {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field, columns[parseInt(index.toString(), 10)].isForeignKey);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent, this.column.isForeignColumn());\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((this.filterModule && hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && !parentsUntil(target, 'e-date-overflow') && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle\n && !(parentsUntil(target, 'e-search-wrapper') && !hasDialogClosed)) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id && !(parentsUntil(target, 'e-search-wrapper')\n && hasDialogClosed);\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n this.actualData = Object.keys(this.actualPredicate);\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n this.checkboxFilterObject = dataManager.dataSource.json;\n this.checkboxPrevFilterObject = dataManager.executeLocal(query);\n for (var i = 0; i < this.checkboxPrevFilterObject.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (this.checkboxPrevFilterObject[parseInt(i.toString(), 10)].field ===\n this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var TrendlinesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-trendlines';\n }\n }\n});\nexport var TrendlinesPlugin = {\n name: 'e-trendlines',\n install: function (Vue) {\n Vue.component(TrendlinesPlugin.name, TrendlinesDirective);\n }\n};\nexport var TrendlineDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-trendline';\n }\n }\n});\nexport var TrendlinePlugin = {\n name: 'e-trendline',\n install: function (Vue) {\n Vue.component(TrendlinePlugin.name, TrendlineDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var SegmentsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-segments';\n }\n }\n});\nexport var SegmentsPlugin = {\n name: 'e-segments',\n install: function (Vue) {\n Vue.component(SegmentsPlugin.name, SegmentsDirective);\n }\n};\nexport var SegmentDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-segment';\n }\n }\n});\nexport var SegmentPlugin = {\n name: 'e-segment',\n install: function (Vue) {\n Vue.component(SegmentPlugin.name, SegmentDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var SeriesCollectionDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-series-collection';\n }\n }\n});\nexport var SeriesCollectionPlugin = {\n name: 'e-series-collection',\n install: function (Vue) {\n Vue.component(SeriesCollectionPlugin.name, SeriesCollectionDirective);\n }\n};\nexport var SeriesDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-series';\n }\n }\n});\nexport var SeriesPlugin = {\n name: 'e-series',\n install: function (Vue) {\n Vue.component(SeriesPlugin.name, SeriesDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StripLinesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-striplines';\n }\n }\n});\nexport var StripLinesPlugin = {\n name: 'e-striplines',\n install: function (Vue) {\n Vue.component(StripLinesPlugin.name, StripLinesDirective);\n }\n};\nexport var StripLineDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stripline';\n }\n }\n});\nexport var StripLinePlugin = {\n name: 'e-stripline',\n install: function (Vue) {\n Vue.component(StripLinePlugin.name, StripLineDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var CategoriesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-categories';\n }\n }\n});\nexport var CategoriesPlugin = {\n name: 'e-categories',\n install: function (Vue) {\n Vue.component(CategoriesPlugin.name, CategoriesDirective);\n }\n};\nexport var CategoryDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-category';\n }\n }\n});\nexport var CategoryPlugin = {\n name: 'e-category',\n install: function (Vue) {\n Vue.component(CategoryPlugin.name, CategoryDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var MultiLevelLabelsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-multilevellabels';\n }\n }\n});\nexport var MultiLevelLabelsPlugin = {\n name: 'e-multilevellabels',\n install: function (Vue) {\n Vue.component(MultiLevelLabelsPlugin.name, MultiLevelLabelsDirective);\n }\n};\nexport var MultiLevelLabelDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-multilevellabel';\n }\n }\n});\nexport var MultiLevelLabelPlugin = {\n name: 'e-multilevellabel',\n install: function (Vue) {\n Vue.component(MultiLevelLabelPlugin.name, MultiLevelLabelDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AxesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-axes';\n }\n }\n});\nexport var AxesPlugin = {\n name: 'e-axes',\n install: function (Vue) {\n Vue.component(AxesPlugin.name, AxesDirective);\n }\n};\nexport var AxisDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-axis';\n }\n }\n});\nexport var AxisPlugin = {\n name: 'e-axis',\n install: function (Vue) {\n Vue.component(AxisPlugin.name, AxisDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var RowsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-rows';\n }\n }\n});\nexport var RowsPlugin = {\n name: 'e-rows',\n install: function (Vue) {\n Vue.component(RowsPlugin.name, RowsDirective);\n }\n};\nexport var RowDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-row';\n }\n }\n});\nexport var RowPlugin = {\n name: 'e-row',\n install: function (Vue) {\n Vue.component(RowPlugin.name, RowDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var RangeColorSettingsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-rangecolorsettings';\n }\n }\n});\nexport var RangeColorSettingsPlugin = {\n name: 'e-rangecolorsettings',\n install: function (Vue) {\n Vue.component(RangeColorSettingsPlugin.name, RangeColorSettingsDirective);\n }\n};\nexport var RangeColorSettingDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-rangecolorsetting';\n }\n }\n});\nexport var RangeColorSettingPlugin = {\n name: 'e-rangecolorsetting',\n install: function (Vue) {\n Vue.component(RangeColorSettingPlugin.name, RangeColorSettingDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AnnotationsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-annotations';\n }\n }\n});\nexport var AnnotationsPlugin = {\n name: 'e-annotations',\n install: function (Vue) {\n Vue.component(AnnotationsPlugin.name, AnnotationsDirective);\n }\n};\n/**\n * `e-annotation` directive represent a annotation of the VueJS Chart.\n * It must be contained in a Chart component(`ejs-chart`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AnnotationDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-annotation';\n }\n }\n});\nexport var AnnotationPlugin = {\n name: 'e-annotation',\n install: function (Vue) {\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var SelectedDataIndexesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-selecteddataindexes';\n }\n }\n});\nexport var SelectedDataIndexesPlugin = {\n name: 'e-selecteddataindexes',\n install: function (Vue) {\n Vue.component(SelectedDataIndexesPlugin.name, SelectedDataIndexesDirective);\n }\n};\nexport var SelectedDataIndexDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-selecteddataindex';\n }\n }\n});\nexport var SelectedDataIndexPlugin = {\n name: 'e-selecteddataindex',\n install: function (Vue) {\n Vue.component(SelectedDataIndexPlugin.name, SelectedDataIndexDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var IndicatorsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-indicators';\n }\n }\n});\nexport var IndicatorsPlugin = {\n name: 'e-indicators',\n install: function (Vue) {\n Vue.component(IndicatorsPlugin.name, IndicatorsDirective);\n }\n};\nexport var IndicatorDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-indicator';\n }\n }\n});\nexport var IndicatorPlugin = {\n name: 'e-indicator',\n install: function (Vue) {\n Vue.component(IndicatorPlugin.name, IndicatorDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Chart } from '@syncfusion/ej2-charts';\nimport { TrendlinesDirective, TrendlineDirective, TrendlinesPlugin, TrendlinePlugin } from './trendlines.directive';\nimport { SegmentsDirective, SegmentDirective, SegmentsPlugin, SegmentPlugin } from './segments.directive';\nimport { SeriesCollectionDirective, SeriesDirective, SeriesCollectionPlugin, SeriesPlugin } from './series.directive';\nimport { StripLinesDirective, StripLineDirective, StripLinesPlugin, StripLinePlugin } from './striplines.directive';\nimport { CategoriesDirective, CategoryDirective, CategoriesPlugin, CategoryPlugin } from './categories.directive';\nimport { MultiLevelLabelsDirective, MultiLevelLabelDirective, MultiLevelLabelsPlugin, MultiLevelLabelPlugin } from './multilevellabels.directive';\nimport { AxesDirective, AxisDirective, AxesPlugin, AxisPlugin } from './axes.directive';\nimport { RowsDirective, RowDirective, RowsPlugin, RowPlugin } from './rows.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { RangeColorSettingsDirective, RangeColorSettingDirective, RangeColorSettingsPlugin, RangeColorSettingPlugin } from './rangecolorsettings.directive';\nimport { AnnotationsDirective, AnnotationDirective, AnnotationsPlugin, AnnotationPlugin } from './annotations.directive';\nimport { SelectedDataIndexesDirective, SelectedDataIndexDirective, SelectedDataIndexesPlugin, SelectedDataIndexPlugin } from './selecteddataindexes.directive';\nimport { IndicatorsDirective, IndicatorDirective, IndicatorsPlugin, IndicatorPlugin } from './indicators.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowExport', 'allowMultiSelection', 'annotations', 'axes', 'background', 'backgroundImage', 'border', 'chartArea', 'columns', 'crosshair', 'currencyCode', 'dataSource', 'description', 'enableAnimation', 'enableAutoIntervalOnBothAxis', 'enableCanvas', 'enableExport', 'enablePersistence', 'enableRtl', 'enableSideBySidePlacement', 'height', 'highlightColor', 'highlightMode', 'highlightPattern', 'indicators', 'isMultiSelect', 'isTransposed', 'legendSettings', 'locale', 'margin', 'palettes', 'primaryXAxis', 'primaryYAxis', 'rangeColorSettings', 'rows', 'selectedDataIndexes', 'selectionMode', 'selectionPattern', 'series', 'subTitle', 'subTitleStyle', 'tabIndex', 'theme', 'title', 'titleStyle', 'tooltip', 'useGroupingSeparator', 'width', 'zoomSettings', 'afterExport', 'animationComplete', 'annotationRender', 'axisLabelClick', 'axisLabelRender', 'axisMultiLabelRender', 'axisRangeCalculated', 'beforeExport', 'beforePrint', 'beforeResize', 'chartDoubleClick', 'chartMouseClick', 'chartMouseDown', 'chartMouseLeave', 'chartMouseMove', 'chartMouseUp', 'drag', 'dragComplete', 'dragEnd', 'dragStart', 'legendClick', 'legendRender', 'load', 'loaded', 'multiLevelLabelClick', 'onZooming', 'pointClick', 'pointDoubleClick', 'pointMove', 'pointRender', 'resized', 'scrollChanged', 'scrollEnd', 'scrollStart', 'selectionComplete', 'seriesRender', 'sharedTooltipRender', 'textRender', 'tooltipRender', 'zoomComplete'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents Vuejs chart Component\n * ```vue\n * \n * ```\n */\nexport var ChartComponent = vueDefineComponent({\n name: 'ChartComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Chart({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-series-collection\": { \"e-series\": { \"e-trendlines\": \"e-trendline\", \"e-segments\": \"e-segment\" } }, \"e-axes\": { \"e-axis\": { \"e-striplines\": \"e-stripline\", \"e-multilevellabels\": { \"e-multilevellabel\": { \"e-categories\": \"e-category\" } } } }, \"e-rows\": \"e-row\", \"e-columns\": \"e-column\", \"e-rangecolorsettings\": \"e-rangecolorsetting\", \"e-annotations\": \"e-annotation\", \"e-selecteddataindexes\": \"e-selecteddataindex\", \"e-indicators\": \"e-indicator\" },\n tagNameMapper: { \"e-series-collection\": \"e-series\", \"e-striplines\": \"e-stripLines\", \"e-multilevellabels\": \"e-multiLevelLabels\", \"e-rangecolorsettings\": \"e-rangeColorSettings\", \"e-selecteddataindexes\": \"e-selectedDataIndexes\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addAxes: function (axisCollection) {\n return this.ej2Instances.addAxes(axisCollection);\n },\n addSeries: function (seriesCollection) {\n return this.ej2Instances.addSeries(seriesCollection);\n },\n clearSeries: function () {\n return this.ej2Instances.clearSeries();\n },\n createChartSvg: function () {\n return this.ej2Instances.createChartSvg();\n },\n export: function (type, fileName) {\n return this.ej2Instances.export(type, fileName);\n },\n getLocalizedLabel: function (key) {\n return this.ej2Instances.getLocalizedLabel(key);\n },\n hideCrosshair: function () {\n return this.ej2Instances.hideCrosshair();\n },\n hideTooltip: function () {\n return this.ej2Instances.hideTooltip();\n },\n isSecondaryAxis: function (axis) {\n return this.ej2Instances.isSecondaryAxis(axis);\n },\n print: function (id) {\n return this.ej2Instances.print(id);\n },\n processData: function (render) {\n return this.ej2Instances.processData(render);\n },\n refreshLiveData: function () {\n return this.ej2Instances.refreshLiveData();\n },\n removeAxis: function (index) {\n return this.ej2Instances.removeAxis(index);\n },\n removeSeries: function (index) {\n return this.ej2Instances.removeSeries(index);\n },\n setAnnotationValue: function (annotationIndex, content) {\n return this.ej2Instances.setAnnotationValue(annotationIndex, content);\n },\n showCrosshair: function (x, y) {\n return this.ej2Instances.showCrosshair(x, y);\n },\n showTooltip: function (x, y, isPoint) {\n return this.ej2Instances.showTooltip(x, y, isPoint);\n },\n }\n});\nexport var ChartPlugin = {\n name: 'ejs-chart',\n install: function (Vue) {\n Vue.component(ChartPlugin.name, ChartComponent);\n Vue.component(SeriesPlugin.name, SeriesDirective);\n Vue.component(SeriesCollectionPlugin.name, SeriesCollectionDirective);\n Vue.component(TrendlinePlugin.name, TrendlineDirective);\n Vue.component(TrendlinesPlugin.name, TrendlinesDirective);\n Vue.component(SegmentPlugin.name, SegmentDirective);\n Vue.component(SegmentsPlugin.name, SegmentsDirective);\n Vue.component(AxisPlugin.name, AxisDirective);\n Vue.component(AxesPlugin.name, AxesDirective);\n Vue.component(StripLinePlugin.name, StripLineDirective);\n Vue.component(StripLinesPlugin.name, StripLinesDirective);\n Vue.component(MultiLevelLabelPlugin.name, MultiLevelLabelDirective);\n Vue.component(MultiLevelLabelsPlugin.name, MultiLevelLabelsDirective);\n Vue.component(CategoryPlugin.name, CategoryDirective);\n Vue.component(CategoriesPlugin.name, CategoriesDirective);\n Vue.component(RowPlugin.name, RowDirective);\n Vue.component(RowsPlugin.name, RowsDirective);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(RangeColorSettingPlugin.name, RangeColorSettingDirective);\n Vue.component(RangeColorSettingsPlugin.name, RangeColorSettingsDirective);\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\n Vue.component(AnnotationsPlugin.name, AnnotationsDirective);\n Vue.component(SelectedDataIndexPlugin.name, SelectedDataIndexDirective);\n Vue.component(SelectedDataIndexesPlugin.name, SelectedDataIndexesDirective);\n Vue.component(IndicatorPlugin.name, IndicatorDirective);\n Vue.component(IndicatorsPlugin.name, IndicatorsDirective);\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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeadlineAlert.vue?vue&type=style&index=0&id=917cdcba&prod&lang=css\"","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n var isExistItem = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\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","import { createTemplate, measureElementRect, logBase, removeElement } from '../utils/helper';\nimport { ChartLocation, stringToNumber, appendElement, withIn } from '../utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { getPoint } from '../utils/helper';\nimport { createElement, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { annotationRender } from '../model/constants';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Annotation Module handles the Annotation for chart and accumulation series.\n */\nvar AnnotationBase = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function AnnotationBase(control) {\n this.control = control;\n }\n /**\n * Method to render the annotation for chart and accumulation series.\n *\n * @private\n * @param annotation\n * @param index\n */\n AnnotationBase.prototype.render = function (annotation, index) {\n this.isChart = this.control.getModuleName() === 'chart';\n this.annotation = annotation;\n var childElement = createTemplate(createElement('div', {\n id: this.control.element.id + '_Annotation_' + index,\n styles: 'position: absolute; z-index: 1' //by default z-index set for annotation elements\n }), index, annotation.content, this.control);\n return childElement;\n };\n /**\n * Method to calculate the location for annotation - coordinate unit as pixel.\n *\n * @private\n * @param location\n */\n AnnotationBase.prototype.setAnnotationPixelValue = function (location) {\n var rect = this.annotation.region === 'Chart' ?\n new Rect(0, 0, this.control.availableSize.width, this.control.availableSize.height) :\n this.isChart ?\n this.control.chartAxisLayoutPanel.seriesClipRect :\n this.control.series[0].accumulationBound;\n location.x = ((typeof this.annotation.x !== 'string') ?\n ((typeof this.annotation.x === 'number') ? this.annotation.x : 0) :\n stringToNumber(this.annotation.x, rect.width)) + rect.x;\n location.y = ((typeof this.annotation.y === 'number') ? this.annotation.y :\n stringToNumber(this.annotation.y, rect.height)) + rect.y;\n return true;\n };\n /**\n * Method to calculate the location for annotation - coordinate unit as point.\n *\n * @private\n * @param location\n */\n AnnotationBase.prototype.setAnnotationPointValue = function (location) {\n var symbolLocation = new ChartLocation(0, 0);\n if (this.isChart) {\n var chart = this.control;\n var annotation = this.annotation;\n var xAxisName = annotation.xAxisName;\n var yAxisName = annotation.yAxisName;\n var isInverted = chart.requireInvertedAxis;\n var stockChart = this.control.stockChart;\n var xAxis = void 0;\n var yAxis = void 0;\n var xValue = void 0;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (xAxisName === axis.name || (xAxisName == null && axis.name === 'primaryXAxis')) {\n xAxis = axis;\n if (xAxis.valueType.indexOf('Category') > -1) {\n var xAnnotation = xAxis.valueType === 'DateTimeCategory' ? (annotation.x.getTime()).toString() :\n annotation.x;\n if (xAxis.labels.indexOf(xAnnotation) < 0) {\n return false;\n }\n else {\n xValue = xAxis.labels.indexOf(xAnnotation);\n }\n }\n else if (xAxis.valueType === 'DateTime') {\n var option = { skeleton: 'full', type: 'dateTime' };\n xValue = (typeof this.annotation.x === 'object' || typeof new Date(this.annotation.x) === 'object') ?\n Date.parse(chart.intl.getDateParser(option)(chart.intl.getDateFormat(option)(new Date(DataUtil.parse.parseJson({ val: annotation.x }).val)))) : 0;\n }\n else {\n xValue = +annotation.x;\n }\n }\n else if (yAxisName === axis.name || (yAxisName == null && axis.name === 'primaryYAxis')) {\n yAxis = axis;\n }\n }\n if (xAxis && yAxis && withIn(xAxis.valueType === 'Logarithmic' ? logBase(xValue, xAxis.logBase) : xValue, xAxis.visibleRange) && withIn(yAxis.valueType === 'Logarithmic' ? logBase(+annotation.y, yAxis.logBase) : +annotation.y, yAxis.visibleRange)) {\n symbolLocation = getPoint(xValue, +annotation.y, xAxis, yAxis, isInverted);\n location.x = symbolLocation.x + (isInverted ? yAxis.rect.x : xAxis.rect.x);\n // for stockchart, stockchart's toolbar height and title size is added for annotation content\n location.y = symbolLocation.y + (isInverted ? xAxis.rect.y : yAxis.rect.y) +\n ((stockChart && stockChart.enablePeriodSelector) ? stockChart.toolbarHeight + stockChart.titleSize.height : 0);\n }\n else {\n return false;\n }\n return true;\n }\n else {\n return this.setAccumulationPointValue(location);\n }\n };\n /**\n * To process the annotation for accumulation chart.\n *\n * @param annotation\n * @param index\n * @param parentElement\n */\n AnnotationBase.prototype.processAnnotation = function (annotation, index, parentElement) {\n var chart = this.control;\n var location = new ChartLocation(0, 0);\n var annotationElement = this.render(annotation, index);\n var annotationRendered = function () {\n annotationElement.style.transform = 'translate(-50%, -50%)';\n };\n annotationRendered.bind(location, this);\n if (this['setAnnotation' + annotation.coordinateUnits + 'Value'](location)) {\n this.setElementStyle(location, annotationElement, parentElement);\n }\n else if (this.control.redraw) {\n removeElement(annotationElement.id);\n }\n updateBlazorTemplate((this.control.element.id + 'Annotation' + index).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate', chart.stockChart ? chart.stockChart.annotations[index] : this.control.annotations[index], undefined, annotationRendered);\n };\n /**\n * Method to calculate the location for annotation - coordinate unit as point in accumulation chart.\n *\n * @private\n * @param location\n */\n AnnotationBase.prototype.setAccumulationPointValue = function (location) {\n var accumulation = this.control;\n var point;\n for (var _i = 0, _a = accumulation.visibleSeries[0].points; _i < _a.length; _i++) {\n var accPoint = _a[_i];\n if (typeof accPoint.x === 'object') {\n if (Date.parse(accPoint.x) === Date.parse(this.annotation.x) &&\n accPoint.y === this.annotation.y) {\n point = accPoint;\n break;\n }\n }\n else {\n if (accPoint.x === this.annotation.x && accPoint.y === this.annotation.y) {\n point = accPoint;\n break;\n }\n }\n }\n if (point && point.visible) {\n location.x = point.symbolLocation.x;\n location.y = point.symbolLocation.y;\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Method to set the element style for accumulation / chart annotation.\n *\n * @private\n * @param location\n * @param element\n * @param parentElement\n */\n AnnotationBase.prototype.setElementStyle = function (location, element, parentElement) {\n var elementRect = measureElementRect(element, this.control.redraw);\n var argsData = {\n cancel: false, name: annotationRender, content: element,\n location: location\n };\n this.control.trigger(annotationRender, argsData);\n if (!argsData.cancel) {\n argsData.content.style.left = this.setAlignmentValue(this.annotation.horizontalAlignment, elementRect.width, argsData.location.x) + 'px';\n argsData.content.style.top = this.setAlignmentValue(this.annotation.verticalAlignment, elementRect.height, argsData.location.y) + 'px';\n argsData.content.setAttribute('aria-label', this.annotation.description || 'Annotation');\n appendElement(argsData.content, parentElement, this.control.redraw, true, 'left', 'top');\n }\n };\n /**\n * Method to calculate the alignment value for annotation.\n *\n * @private\n * @param alignment\n * @param size\n * @param value\n */\n AnnotationBase.prototype.setAlignmentValue = function (alignment, size, value) {\n switch (alignment) {\n case 'Top':\n case 'Near':\n value -= size;\n break;\n case 'Bottom':\n case 'Far':\n value += 0;\n break;\n case 'Middle':\n case 'Center':\n value -= (size / 2);\n break;\n }\n return value;\n };\n return AnnotationBase;\n}());\nexport { AnnotationBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AnnotationBase } from '../../common/annotation/annotation';\nimport { appendElement, redrawElement } from '../../common/utils/helper';\nimport { createElement } from '@syncfusion/ej2-base';\n/**\n * `ChartAnnotation` module handles the annotation for chart.\n */\nvar ChartAnnotation = /** @class */ (function (_super) {\n __extends(ChartAnnotation, _super);\n /**\n * Constructor for chart annotation.\n *\n * @private\n */\n function ChartAnnotation(control, annotations) {\n var _this = _super.call(this, control) || this;\n _this.chart = control;\n _this.annotations = annotations;\n return _this;\n }\n /**\n * Method to render the annotation for chart\n *\n * @param {Element} element annotation element\n * @private\n */\n ChartAnnotation.prototype.renderAnnotations = function (element) {\n var _this = this;\n this.annotations = this.chart.annotations;\n this.parentElement = redrawElement(this.chart.redraw, this.chart.element.id + '_Annotation_Collections') ||\n createElement('div', {\n id: this.chart.element.id + '_Annotation_Collections'\n });\n this.annotations.map(function (annotation, index) {\n _this.processAnnotation(annotation, index, _this.parentElement);\n });\n appendElement(this.parentElement, element, this.chart.redraw);\n };\n /**\n * To destroy the annotation.\n *\n * @returns {void}\n * @private\n */\n ChartAnnotation.prototype.destroy = function () {\n // Destroy method performed here\n };\n /**\n * Get module name.\n */\n ChartAnnotation.prototype.getModuleName = function () {\n // Returns te module name\n return 'Annotation';\n };\n return ChartAnnotation;\n}(AnnotationBase));\nexport { ChartAnnotation };\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","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n ;\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TicketsReportTemplate.vue?vue&type=style&index=0&id=f6db29d8&prod&lang=css\"","//! 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `ColumnSeries` Module used to render the column series.\n */\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnSeries.prototype.render = function (series) {\n var sideBySideInfo = this.getSideBySideInfo(series);\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointColumn = _a[_i];\n pointColumn.symbolLocations = [];\n pointColumn.regions = [];\n if (pointColumn.visible && withInRange(series.points[pointColumn.index - 1], pointColumn, series.points[pointColumn.index + 1], series)) {\n this.rect = this.getRectangle(pointColumn.xValue + sideBySideInfo.start, pointColumn.yValue, pointColumn.xValue + sideBySideInfo.end, origin, series);\n this.rect.width = series.columnWidthInPixel ? (series.columnWidthInPixel - (series.chart.enableSideBySidePlacement ? series.columnWidthInPixel * series.columnSpacing : 0)) : this.rect.width;\n this.rect.x = series.columnWidthInPixel ? this.rect.x - (((series.columnWidthInPixel / 2) * series.rectCount) -\n (series.columnWidthInPixel * series.index)) : this.rect.x;\n var color = series.category === 'Indicator' ? pointColumn.color : series.interior;\n argsData = this.triggerEvent(series, pointColumn, color, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointColumn, this.rect, series);\n this.drawRectangle(series, pointColumn, this.rect, argsData);\n if (series.columnFacet === 'Cylinder') {\n var cylinderSeriesOption = {\n 'isColumn': true,\n 'stacking': false,\n 'isLastSeries': true\n };\n this.drawCylinder(this.options, this.element, cylinderSeriesOption, this.rect, series);\n }\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n ColumnSeries.prototype.getModuleName = function () {\n return 'ColumnSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return ColumnSeries;\n}(ColumnBase));\nexport { ColumnSeries };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","//! 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getPoint, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `LineSeries` module used to render the line series.\n */\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Line Series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var point1;\n var point2;\n var direction = '';\n var prevPoint = null;\n var startPoint = 'M';\n var isPolar = (series.chart && series.chart.chartAreaType === 'PolarRadar');\n var isDrop = (series.emptyPointSettings && series.emptyPointSettings.mode === 'Drop');\n var getCoordinate = isPolar ? TransformToVisible : getPoint;\n var visiblePoints = series.category === 'TrendLine' ? series.points : this.enableComplexProperty(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.regions = [];\n point.symbolLocations = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n direction += this.getLineDirection(prevPoint, point, series, isInverted, getCoordinate, startPoint);\n startPoint = prevPoint ? 'L' : startPoint;\n prevPoint = point;\n this.storePointLocation(point, series, isInverted, getCoordinate);\n }\n else {\n prevPoint = isDrop ? prevPoint : null;\n startPoint = isDrop ? startPoint : 'M';\n }\n }\n if (isPolar) {\n if (series.isClosed) {\n var points = this.getFirstLastVisiblePoint(visiblePoints);\n point2 = getCoordinate(points.last.xValue, points.last.yValue, xAxis, yAxis, isInverted, series);\n point1 = getCoordinate(points.first.xValue, points.first.yValue, xAxis, yAxis, isInverted, series);\n direction = direction.concat(startPoint + ' ' + point2.x + ' ' + point2.y + ' ' + 'L' + ' ' + point1.x + ' ' + point1.y);\n }\n }\n var name = series.category === 'Indicator' ? series.chart.element.id + '_Indicator_' + series.index + '_' + series.name :\n series.category === 'TrendLine' ? series.chart.element.id + '_Series_' + series.sourceIndex + '_TrendLine_' + series.index :\n series.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index);\n var options = new PathOption(name, 'none', series.width, series.interior, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n LineSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doProgressiveAnimation(series, option);\n };\n /**\n * Get module name.\n */\n LineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'LineSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return LineSeries;\n}(LineBase));\nexport { LineSeries };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, pathAnimation, getElement } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { ColumnBase } from './column-base';\n/**\n * `CandleSeries` module is used to render the candle series.\n */\nvar CandleSeries = /** @class */ (function (_super) {\n __extends(CandleSeries, _super);\n function CandleSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Candle series.\n *\n * @returns {void}\n * @private\n */\n CandleSeries.prototype.render = function (series) {\n var sideBySideInfo = this.getSideBySideInfo(series);\n var argsData;\n var borderWidth = Math.max(series.border.width, 1);\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n var direction = '';\n var centerRegion = void 0;\n var tickRegion = void 0;\n //initializing after zooming and also normal initialization\n point.regions = [];\n point.symbolLocations = [];\n if (point.visible && withInRange(series.points[point.index - 1], point, series.points[point.index + 1], series)) {\n //region to cover the top and bottom ticks\n tickRegion = this.getRectangle((point.xValue + sideBySideInfo.median), Math.max(point.high, point.low), (point.xValue + sideBySideInfo.median), Math.min(point.high, point.low), series);\n if (!series.chart.requireInvertedAxis) {\n tickRegion.x -= borderWidth / 2;\n tickRegion.width = borderWidth;\n }\n else {\n tickRegion.y -= borderWidth / 2;\n tickRegion.height = borderWidth;\n }\n //get middleRect\n centerRegion = this.getRectangle((point.xValue + sideBySideInfo.start), Math.max(point.open, point.close), (point.xValue + sideBySideInfo.end), Math.min(point.open, point.close), series);\n direction = this.getPathString(tickRegion, centerRegion, series);\n argsData = this.triggerPointRenderEvent(series, point);\n if (!argsData.cancel) {\n this.drawCandle(series, point, centerRegion, argsData, direction);\n this.updateSymbolLocation(point, tickRegion, series);\n this.updateSymbolLocation(point, centerRegion, series);\n }\n }\n }\n };\n /**\n * Trigger point rendering event\n */\n CandleSeries.prototype.triggerPointRenderEvent = function (series, point) {\n var fill = this.getCandleColor(point, series);\n var border = { color: series.border.color, width: Math.max(series.border.width, 1) };\n return this.triggerEvent(series, point, fill, border);\n };\n /**\n * Find the color of the candle\n *\n * @param {Points} point point\n * @param {Series} series series\n * @returns {string} color of the candle\n * @private\n */\n CandleSeries.prototype.getCandleColor = function (point, series) {\n var previousPoint = series.points[point.index - 1];\n if (series.enableSolidCandles === false) {\n if (!previousPoint) {\n return series.bearFillColor || series.chart.themeStyle.bearFillColor;\n }\n else {\n return previousPoint.close > point.close ? series.bullFillColor || series.chart.themeStyle.bullFillColor\n : series.bearFillColor || series.chart.themeStyle.bearFillColor;\n }\n }\n else {\n return point.open > point.close ? series.bullFillColor || series.chart.themeStyle.bullFillColor :\n series.bearFillColor || series.chart.themeStyle.bearFillColor;\n }\n };\n /**\n * Finds the path of the candle shape\n *\n * @private\n */\n CandleSeries.prototype.getPathString = function (topRect, midRect, series) {\n var direction = '';\n var center = series.chart.requireInvertedAxis ? topRect.y + topRect.height / 2 :\n topRect.x + topRect.width / 2;\n //tick 1 segment\n direction += !series.chart.requireInvertedAxis ?\n 'M' + ' ' + (center) + ' ' + (topRect.y) + ' ' + 'L' + ' ' + (center) + ' ' + midRect.y :\n 'M' + ' ' + (topRect.x) + ' ' + (center) + ' ' + 'L' + ' ' + (midRect.x) + ' ' + center;\n direction = direction.concat(' M' + ' ' + (midRect.x) + ' ' + (midRect.y) + ' ' +\n 'L' + ' ' + (midRect.x + midRect.width) + ' ' + (midRect.y) + ' ' +\n 'L' + ' ' + (midRect.x + midRect.width) + ' ' +\n (midRect.y + midRect.height) + ' ' +\n 'L' + ' ' + (midRect.x) + ' ' + (midRect.y + midRect.height) +\n ' ' + 'Z');\n direction += !series.chart.requireInvertedAxis ?\n ' M' + ' ' + (center) + ' ' + (midRect.y + midRect.height) + ' ' + 'L' + ' ' + (center) + ' ' + (topRect.y +\n topRect.height) :\n ' M' + ' ' + (midRect.x + midRect.width) + ' ' + (center) + ' ' + 'L' + ' ' +\n (topRect.x + topRect.width) + ' ' + center;\n return direction;\n };\n /**\n * Draws the candle shape\n *\n * @param {Series} series series\n * @param {Points} point point\n * @param {Rect} rect point region\n * @param {IPointRenderEventArgs} argsData argsData\n * @param {string} direction path direction\n * @returns {void}\n * @private\n */\n CandleSeries.prototype.drawCandle = function (series, point, rect, argsData, direction) {\n var check = series.chart.requireInvertedAxis ? rect.height : rect.width;\n if (check <= 0) {\n return null;\n }\n var fill = !series.enableSolidCandles ?\n (point.open > point.close ? argsData.fill : 'transparent') : argsData.fill;\n argsData.border.color = argsData.fill;\n var options = new PathOption(series.chart.element.id + '_Series_' + series.index + '_Point_' + point.index, fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, direction);\n var element = getElement(options.id);\n var previousDirection = element ? element.getAttribute('d') : null;\n var candleElement = series.chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n candleElement.setAttribute('role', 'img');\n candleElement.setAttribute('aria-label', point.x.toString() + ':' + point.high.toString()\n + ':' + point.low.toString() + ':' + point.close.toString() + ':' + point.open.toString());\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(candleElement);\n }\n pathAnimation(element, direction, series.chart.redraw, previousDirection);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n CandleSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n CandleSeries.prototype.getModuleName = function () {\n return 'CandleSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the candle series.\n *\n * @returns {void}\n * @private\n */\n CandleSeries.prototype.destroy = function () {\n /**\n * Destroys the candle series.\n */\n };\n return CandleSeries;\n}(ColumnBase));\nexport { CandleSeries };\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nexport var properties = ['isLazyUpdate', 'plugins', 'content', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'iconCss', 'iconPosition', 'isPrimary', 'isToggle', 'locale', 'created'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS Button Component\n * ```html\n * Button\n * ```\n */\nexport var ButtonComponent = vueDefineComponent({\n name: 'ButtonComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Button({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('button', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n click: function () {\n return this.ej2Instances.click();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n }\n});\nexport var ButtonPlugin = {\n name: 'ejs-button',\n install: function (Vue) {\n Vue.component(ButtonPlugin.name, ButtonComponent);\n }\n};\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true \n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow', attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is decimal or integer and parseFloat to remove trailing zeros\n /* eslint-disable-next-line */\n gObj.searchSettings.key = /^\\d+(\\.\\d+)?$/.test(searchString) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this_1.enableLogger = true;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) &&\n !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = 0;\n if (this.isRowDragable()) {\n left++;\n }\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) { return col.field === cell.column.field; });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto' && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-multi-select-list-wrapper')) && parentsUntil(relatedTarget, 'e-input-group'))\n && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HedgingOverviewReportTemplate.vue?vue&type=style&index=0&id=04d97a6c&prod&lang=css\"","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./M2MReportTemplate.vue?vue&type=style&index=0&id=43254626&prod&lang=css\"","//! 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n else {\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n }\n else if (this.infiniteRenderMod) {\n this.infiniteFltrBtnHandler(coll);\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n this.options.parentTotalDataCount = this.options.parentTotalDataCount;\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '
A
';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '';\n };\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height) :\n Math.floor(parseInt(computedStyle.height.split('px')[0])) - 5;\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n var liHeight = this.getListHeight(wrapperElem);\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount + this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n if (value === pred.value && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\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","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { isNullOrUndefined, addClass, extend } from '@syncfusion/ej2-base';\nimport { appendChildren, setStyleAndAttributes, addFixedColumnBorder, addStickyColumnPosition } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (this.parent.getContentTable().querySelector('.e-emptyrow')) {\n var emptyRow = this.parent.getContentTable().querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.parent.frozenRows && this.parent.element.querySelector('.e-frozenrow-empty')) {\n this.parent.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length +\n this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var inputValue;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n inputValue = (elements[col.uid]).value;\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, col, td_1);\n if (this.parent.enableColumnVirtualization) {\n if (col.freeze === 'Left' && !isNullOrUndefined(col.valueX)) {\n td_1.style.left = (col.valueX - this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Right' && !isNullOrUndefined(col.valueX)) {\n td_1.style.right = (col.valueX + this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Fixed') {\n td_1.style.left = (this.parent.leftrightColumnWidth('left') - this.parent.translateX) + 'px';\n td_1.style.right = (this.parent.leftrightColumnWidth('right') + this.parent.translateX) + 'px';\n }\n }\n }\n td_1.setAttribute('aria-label', inputValue + this.parent.localeObj.getConstant('ColumnHeader') + col.headerText);\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n addFixedColumnBorder(tr);\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.setAttribute('aria-label', args.cell.innerHTML + this.parent.localeObj.getConstant('ColumnHeader') + args.columnObject.field);\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var _this = this;\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('HeaderTemplate', args).outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('FooterTemplate', args).outerHTML;\n }) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn, padZero } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[0];\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = (this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n if (col.type === 'dateonly' && args.rowData[col.field] instanceof Date) {\n var cellValue = args.rowData[col.field];\n args.rowData[col.field] = cellValue.getFullYear() + '-' + padZero(cellValue.getMonth() + 1) + '-' + padZero(cellValue.getDate());\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n if (params.dataSource) {\n this.obj.dataSource = params.dataSource;\n }\n else {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals['open'], this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals['open'], this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n if (this.column.edit.params && this.column.edit.params.dataSource) {\n this.obj.dataSource = this.column.edit.params.dataSource;\n }\n else {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, col.edit.params));\n this.obj.appendTo(args.element);\n if (this.parent.editSettings.mode === 'Batch') {\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n };\n DefaultEditCell.prototype.keyEventHandler = function (args) {\n if (args.key === 'Enter' || args.key === 'Tab') {\n var evt = new Event('change', { bubbles: false, cancelable: true });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n DefaultEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit') {\n this.parent.selectRow(e['index']);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableColumnVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableColumnVirtualization ||\n (this.parent.enableInfiniteScrolling && !this.previousData)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[0];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length\n && this.parent.groupSettings.showGroupedColumn) {\n var dragRow = args.row;\n var rows = this.parent.getRowsObject();\n var dragRowUid = dragRow.getAttribute('data-uid');\n var dragRowObject_1 = this.parent.getRowObjectFromUID(dragRowUid);\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef = this_1;\n rows = rows.filter(function (data) {\n var flag = data.isDataRow && data !== dragRowObject_1;\n if (flag) {\n var groupedColumn = thisRef.parent.groupSettings.columns[parseInt(i.toString(), 10)].split('.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer1 = data.data[groupedColumn[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer2 = args.data[groupedColumn[0]];\n for (var j = 1; j < groupedColumn.length; j++) {\n comparer1 = comparer1[groupedColumn[j]];\n comparer2 = comparer2[groupedColumn[j]];\n }\n return flag && comparer1 === comparer2;\n }\n else {\n return flag;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n _loop_1(i);\n }\n var dropRowObject = rows[0];\n if (!isNullOrUndefined(dragRowObject_1) && !isNullOrUndefined(dropRowObject) &&\n dragRowObject_1.parentUid !== dropRowObject.parentUid) {\n this.parent['groupModule'].groupedRowReorder(dragRowObject_1, dropRowObject);\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.cloneFrozen) {\n this.cloneFrozen.remove();\n if (this.frozen) {\n this.frozen.classList.remove('e-hiddenrow');\n }\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n for (var i = 0; i < tr.length; i++) {\n addFixedColumnBorder(tr[parseInt(i.toString(), 10)]);\n if (this.parent.enableColumnVirtualization &&\n tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze').length) {\n var cols = this.parent.getColumns();\n var leftrightCells = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze.e-fixedfreeze'));\n for (var j = 0; j < leftrightCells.length; j++) {\n if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-leftfreeze')) {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (cols[parseInt(j.toString(), 10)].valueX - this.parent.translateX) + 'px';\n }\n else if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-rightfreeze')) {\n var idx = parseInt(leftrightCells[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10);\n leftrightCells[parseInt(j.toString(), 10)].style.right = ((cols[parseInt(idx.toString(), 10)].valueX + this.parent.translateX)) + 'px';\n }\n else {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (this.parent.leftrightColumnWidth('left') -\n this.parent.translateX) + 'px';\n leftrightCells[parseInt(j.toString(), 10)].style.right = (this.parent.leftrightColumnWidth('right') +\n this.parent.translateX) + 'px';\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_2 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_2(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, closest, select, EventHandler } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, refreshForeignData, getObject, addRemoveEventListener, } from '../base/util';\nimport { getCellByColAndRowIndex, addFixedColumnBorder } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n EventHandler.add(this.parent.element, 'mousedown', this.mouseDownHandler, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n EventHandler.remove(this.parent.element, 'mousedown', this.mouseDownHandler);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.mouseDownHandler = function (e) {\n if (!isNullOrUndefined(this.parent.element.querySelector('.e-gridform'))) {\n this.mouseDownElement = e.target;\n }\n else {\n this.mouseDownElement = undefined;\n }\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if ((this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td'))\n && isNullOrUndefined(this.mouseDownElement) || this.mouseDownElement === e.target) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow) &&\n this.parent.getColumns()[parseInt(colIndex.toString(), 10)].allowEditing) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear) {\n if ((this.parent.isEdit && clear)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var actualIndex = e.element.getAttribute('data-colindex') ? parseInt(e.element.getAttribute('data-colindex')) : cellIndex;\n if (actualIndex !== cellIndex) {\n cellIndex = actualIndex;\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += ((this.parent.getContent().querySelector('.e-hiddenrow') ? 0 : this.parent.frozenRows) +\n this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length);\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n for (var i = 0; i < rows.length; i++) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n isInsert = this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n if (isInsert) {\n i--;\n }\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n rows.splice(i, 1);\n };\n /**\n * @param {Row} row - specifies the row object\n * @param {freezeTable} newTableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n var rowClone = row.clone();\n if (isTop) {\n gObj.getRowsObject().unshift(rowClone);\n }\n else {\n gObj.getRowsObject().push(rowClone);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (selectedRows.length === 1 || data) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataObjects = gObj.getRowsObject().filter(function (row) { return !row.isDetailRow; });\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n rows[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rows[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n dataObjects[parseInt(i.toString(), 10)].index = j;\n j++;\n }\n else {\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n dataObjects[parseInt(i.toString(), 10)].index = -1;\n }\n }\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n if (gObj.isEdit) {\n this.saveCell();\n }\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n addFixedColumnBorder(tr);\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-empty')) {\n gObj.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject() });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n });\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n // if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n // return i;\n // } else \n if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].allowEditing && cols[parseInt(i.toString(), 10)].visible &&\n !(cols[parseInt(i.toString(), 10)].isIdentity && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n var row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n // cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td_1 = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj_1 = gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\n if (gObj.isEdit ||\n (!rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.data[\"\" + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.data[\"\" + field]).toString() !== new Date(value).toString()))) ||\n (rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.changes[\"\" + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.changes[\"\" + field]).toString() !== new Date(value).toString())))) {\n this.refreshTD(td_1, col, rowObj_1, value);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && col.template) {\n var thisRef_1 = this;\n var newReactTd_1 = this.newReactTd;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.queryCellInfo, {\n cell: newReactTd_1 || td_1, column: col, data: rowObj_1.changes\n });\n });\n }\n else if ((this.parent.isReact || isReactChild) && col.template) {\n this.parent.renderTemplates();\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n else {\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n }\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n if (rowObj) {\n this.setChanges(rowObj, column.field, value);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n }\n var rowcell = rowObj ? rowObj.cells : undefined;\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (rowObj) {\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n }\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit) {\n var editRowIdx = 0;\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n for (var i = 0; i < insertedRows.length; i++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td:not(.e-hide)')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerHTML === '') {\n this.editCell(parseInt(insertedRows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10), this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n args.cell.removeAttribute('aria-label');\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n // cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n var isReactCompiler = gObj.isReact && column.template && typeof (column.template) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj\n && gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n if (gObj.requireTemplateRef) {\n gObj.renderTemplates(function () {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n });\n }\n else {\n gObj.renderTemplates();\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n else {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n if (!(_this.parent.isReact || _this.parent.isVue)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n if (_this.parent.isReact || _this.parent.isVue) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell');\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || (rowcell && !this.parent.isReact)) {\n var cell = void 0;\n if (rowcell) {\n cell = rowcell.querySelector('.e-field');\n }\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.editNext = false;\n this.mouseDownElement = undefined;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","import { L10n, getValue, getDefaultDateObject, cldrData } from '@syncfusion/ej2-base';\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week'\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.isBlur = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.isLeadingZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (mask) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day) {\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = true;\n this.isBlur = mask.isBlur;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT\n || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start === 0 && end === length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 ||\n this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] === '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n }\n case 'M':\n {\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] === '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n if (month >= 10 || month == 1) {\n if (this.isLeadingZero && month == 1) {\n this.isNavigate = month.toString().length === 1;\n this.isLeadingZero = false;\n }\n else {\n this.isNavigate = month.toString().length === 2;\n }\n }\n else {\n this.isNavigate = month.toString().length === 1;\n }\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n }\n else {\n newDateValue.setMonth(0);\n this.isLeadingZero = true;\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else {\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n var yearValue = (this.dateformat.match(/y/g) || []).length;\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] === '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === yearValue) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n }\n break;\n }\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'y':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString[periodkeys[0]] : periodString[periodkeys[1]];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n {\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n }\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName === 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName === 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName === 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\nexport { MaskedDateTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker, MaskedDateTime } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nDatePicker.Inject(MaskedDateTime);\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, getParsedFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, padZero } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.fieldname = '';\n this.data = {};\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length || isNullOrUndefined(this.parent.getRowByIndex(parseInt(this.parent.getSelectedRows()[0].getAttribute('data-rowindex'), 10)))) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal') {\n var idx = parseInt(tr.getAttribute('data-rowindex'), 10);\n tr = this.parent.getRowByIndex(idx);\n }\n var lastTr = gObj.getContent().querySelector('tr:last-child');\n var hdrTbody = gObj.getHeaderContent().querySelector('tbody');\n if (gObj.frozenRows && isNullOrUndefined(lastTr) && hdrTbody && hdrTbody.querySelector('tr:last-child')) {\n this.isLastRow = tr.rowIndex === parseInt(gObj.getHeaderContent().querySelector('tbody').querySelector('tr:last-child').getAttribute('data-rowindex'), 10);\n }\n else if (lastTr) {\n this.isLastRow = tr.rowIndex === lastTr.rowIndex;\n }\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.fieldname = fieldname;\n this.data = data;\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n case 'dateonly':\n val = value && (value = new Date(value)) ?\n value.getFullYear() + '-' + padZero(value.getMonth() + 1) + '-' + padZero(value.getDate()) : null;\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n if (this.parent.isFrozenGrid()) {\n if (this.parent.element.querySelector('.e-gridheader')) {\n this.parent.element.querySelector('.e-gridheader').style.position = '';\n }\n this.parent.element.querySelector('.e-gridcontent').style.position = '';\n }\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord(this.fieldname, this.data);\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel', 'filterAfterOpen', 'filterchoicerequest'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterAfterOpen', 'filterBeforeOpen', 'filterchoicerequest', 'filterSearchBegin', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n if (elements[parseInt(i.toString(), 10)].ej2_instances &&\n elements[parseInt(i.toString(), 10)].ej2_instances.length &&\n !elements[parseInt(i.toString(), 10)].ej2_instances[0].isDestroyed) {\n elements[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey && e.action === 'ctrlEnter') {\n e.action = 'insert';\n }\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell.classList.contains('e-unboundcell'))\n || (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab')\n || e.action === 'escape') {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.endEdit();\n }\n if (this.parent.focusModule.active) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var idx = 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = 1;\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n rules = extend(rules, mRules, frRules);\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n if (!(event && event['relatedTarget'] && event['relatedTarget'].classList.contains('e-cancelbutton'))) {\n _this.valErrorPlacement(inputElement, error);\n }\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + getParsedFieldID(id) + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n var field = inputElement.name;\n table = this.parent.isFrozenGrid() ? gObj.element : isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + getParsedFieldID(args.inputName) + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var formObj = this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n rows = [].slice.call(this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHearderRows = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n isFHdr = fHearderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHearderRows.length - 1;\n var insertRow = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (insertRow.length === 1 && (insertRow[0].classList.contains('e-addedrow') || insertRow[0].classList.contains('e-insertedrow'))) {\n isFHdrLastRow = true;\n }\n }\n if (isFHdrLastRow || (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows)) {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n formObj.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n formObj.appendChild(div);\n }\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n this.formObj.element.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n }\n if (!isNullOrUndefined(td)) {\n if (td.classList.contains('e-fixedfreeze')) {\n div.classList.add('e-fixederror');\n }\n else if (td.classList.contains('e-leftfreeze') || td.classList.contains('e-rightfreeze')) {\n div.classList.add('e-freezeerror');\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if (this.parent.frozenRows && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || this.parent.frozenRows) {\n // gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization && !(div.classList.contains('e-freezeerror') && div.classList.contains('e-fixederror'))) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","//! 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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TriggerHitAlert.vue?vue&type=style&index=0&id=43b7490b&prod&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('div',{staticClass:\"col-lg-12 control-section\",staticStyle:{\"padding\":\"10px\",\"position\":\"relative\"}},[_c('div',{attrs:{\"id\":\"account-info\"}}),_c('div',{staticStyle:{\"width\":\"100%\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"id\":\"triggerHitAlertGridId\",\"dataSource\":_vm.data,\"allowFiltering\":true,\"commandClick\":_vm.commandClick,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionComplete\":_vm.actionComplete,\"actionBegin\":_vm.actionBegin,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell,\"width\":\"100%\",\"height\":\"100%\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"triggerAlertId\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"triggerDate\",\"headerText\":\"Alert Date\",\"textAlign\":\"Right\",\"format\":_vm.dateFormatOptions,\"type\":\"date\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"alertType\",\"headerText\":\"Alert\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"clientName\",\"headerText\":\"Client\",\"allowEditing\":false,\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"stateName\",\"headerText\":\"Country\",\"allowEditing\":false,\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"companyName\",\"headerText\":\"Company\",\"allowEditing\":false,\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"utilityTypeName\",\"headerText\":\"Commodity\",\"allowEditing\":false,\"visible\":false,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"contractName\",\"headerText\":\"Contract\",\"allowEditing\":false,\"width\":\"300\"}}),_c('e-column',{attrs:{\"field\":\"productName\",\"headerText\":\"Product\",\"allowEditing\":false,\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"pricingAreaName\",\"headerText\":\"Price Area\",\"textAlign\":\"Left\",\"width\":\"150\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"tradeablePeriodName\",\"headerText\":\"Period\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"triggerTypeName\",\"headerText\":\"Trigger Type\",\"visible\":true,\"width\":\"150\",\"textAlign\":\"Right\"}}),_c('e-column',{attrs:{\"field\":\"triggerPrice\",\"headerText\":\"Trigger Price\",\"textAlign\":\"Right\",\"validationRules\":_vm.percentageRules,\"type\":\"number\",\"format\":\"n3\",\"editType\":\"numericedit\",\"edit\":_vm.numericParams,\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"tradeablePeriodId\",\"headerText\":\"Watched Period\",\"textAlign\":\"Right\",\"visible\":false,\"validationRules\":_vm.requiredRules,\"editType\":\"dropdownedit\",\"edit\":_vm.tradebalePeriodParams,\"foreignKeyField\":\"id\",\"foreignKeyValue\":\"name\",\"dataSource\":_vm.tradebalePeriods,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"marketPrice\",\"headerText\":\"Market Price\",\"textAlign\":\"Right\",\"allowEditing\":false,\"validationRules\":_vm.percentageRules,\"type\":\"number\",\"format\":\"n3\",\"editType\":\"numericedit\",\"edit\":_vm.numericParams,\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"delta\",\"headerText\":\"Delta to Trigger\",\"textAlign\":\"Right\",\"allowEditing\":false,\"validationRules\":_vm.percentageRules,\"type\":\"number\",\"format\":\"n3\",\"editType\":\"numericedit\",\"edit\":_vm.numericParams,\"width\":\"180\"}}),_c('e-column',{attrs:{\"field\":\"alertStatus\",\"headerText\":\"Status\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"unit\",\"headerText\":\"Unit\",\"visible\":false,\"width\":\"60\"}}),_c('e-column',{attrs:{\"field\":\"tolerance\",\"headerText\":\"Tolerance\",\"visible\":false,\"textAlign\":\"Right\",\"validationRules\":_vm.percentageRules,\"type\":\"number\",\"format\":\"n1\",\"editType\":\"numericedit\",\"edit\":_vm.percentageParams,\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"referenceTypeId\",\"headerText\":\"Reference Type\",\"textAlign\":\"Right\",\"visible\":false,\"validationRules\":_vm.requiredRules,\"editType\":\"dropdownedit\",\"edit\":_vm.referenceTypeParams,\"foreignKeyField\":\"id\",\"foreignKeyValue\":\"name\",\"dataSource\":_vm.referenceTypes,\"width\":\"30\"}}),_c('e-column',{attrs:{\"field\":\"referenceTypeName\",\"headerText\":\"Reference Type\",\"visible\":false,\"width\":\"230\"}}),_c('e-column',{attrs:{\"headerText\":\"Watched Window\",\"columns\":_vm.dateColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"applyUntilEnd\",\"headerText\":\"Apply until Default Deadline\",\"displayAsCheckBox\":\"true\",\"visible\":false,\"edit\":_vm.checkboxParams,\"editType\":\"booleanedit\",\"type\":\"boolean\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"notifyOnSystem\",\"headerText\":\"Notify On System\",\"defaultValue\":\"true\",\"displayAsCheckBox\":\"true\",\"visible\":false,\"allowEditing\":false,\"editType\":\"booleanedit\",\"type\":\"boolean\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"notifyEmailAddresses\",\"headerText\":\"Notify Email Addresses\",\"multiline\":\"true\",\"edit\":_vm.multilineParams,\"visible\":false,\"width\":\"150\"}}),_c('e-column',{attrs:{\"headerText\":\"Actions\",\"width\":\"230\",\"textAlign\":\"left\",\"commands\":_vm.commands}})],1)],1)],1),_c('ejs-dialog',{ref:\"alertDialog\",attrs:{\"allowDragging\":_vm.draggable,\"header\":_vm.header,\"buttons\":_vm.alertDlgButtons,\"cssClass\":\"greyBackground\",\"id\":\"alertDialog\",\"visible\":false,\"animationSettings\":_vm.animationSettings,\"showCloseIcon\":_vm.showCloseIcon,\"open\":_vm.dialogOpen,\"close\":_vm.dialogClose,\"width\":_vm.alertWidth,\"position\":_vm.position}},[_c('h5',{staticClass:\"ml-5\",attrs:{\"id\":\"graphHeader\"}},[_vm._v(\" \"+_vm._s(_vm.alertType)+\" \")]),_c('br'),_c('h6',{staticClass:\"ml-5\",attrs:{\"id\":\"graphHeaderSub\"}},[_vm._v(\" \"+_vm._s(_vm.type)+\" Trigger\")]),_c('br'),_c('label',{staticClass:\"mr-5 float-right\"},[_vm._v(\"Alert issued on : \"+_vm._s(_vm.triggerDate))]),_c('br'),_c('br'),_c('label',{staticClass:\"ml-5\"},[_vm._v(_vm._s(_vm.alertText))]),_c('br'),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"column ml-3\"},[_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Client\")]),_vm._v(\": \"+_vm._s(_vm.client))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Country\")]),_vm._v(\": \"+_vm._s(_vm.country))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Price Area\")]),_vm._v(\": \"+_vm._s(_vm.pricingAreaName))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Utility\")]),_vm._v(\": \"+_vm._s(_vm.utility))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Product\")]),_vm._v(\": \"+_vm._s(_vm.product))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Company\")]),_vm._v(\": \"+_vm._s(_vm.company))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Contract Name\")]),_vm._v(\": \"+_vm._s(_vm.contractName))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Contract ID\")]),_vm._v(\": \"+_vm._s(_vm.contractId))]),_c('br'),_c('br')]),_c('div',{staticClass:\"column ml-5\"},[_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Watch Period\")]),_vm._v(\": \"+_vm._s(_vm.watchPeriod))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Trigger Type\")]),_vm._v(\": \"+_vm._s(_vm.type))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Trigger Price\")]),_vm._v(\": \"+_vm._s(_vm.triggerPrice)+\" \"+_vm._s(_vm.contractUnits))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Market Price\")]),_vm._v(\": \"+_vm._s(_vm.marketPrice)+\" \"+_vm._s(_vm.contractUnits))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Delta to Trigger\")]),_vm._v(\": \"+_vm._s(_vm.delta)+\" \"+_vm._s(_vm.contractUnits))]),_c('br'),_c('br')])]),_c('ejs-chart',{attrs:{\"id\":\"hitChartContainer\",\"title\":_vm.title,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"width\":\"700px\",\"height\":\"350px\"}},[_c('e-series-collection',[_c('e-series',{attrs:{\"xName\":\"x\",\"yName\":\"y\",\"name\":\"Market Price\",\"type\":\"MultiColoredLine\",\"pointColorMapping\":\"color\",\"marker\":_vm.marker}})],1)],1)],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TriggerHitAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TriggerHitAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TriggerHitAlert.vue?vue&type=template&id=43b7490b\"\nimport script from \"./TriggerHitAlert.vue?vue&type=script&lang=js\"\nexport * from \"./TriggerHitAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./TriggerHitAlert.vue?vue&type=style&index=0&id=43b7490b&prod&lang=css\"\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","//! 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","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartLocation } from '../../common/utils/helper';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * Tooltip Module used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n _this.template = chart.tooltip.template;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.style.pointerEvents = 'none';\n tooltipDiv.style.position = 'absolute';\n tooltipDiv.style.zIndex = '1';\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart, enable3D) {\n if (data.series.enableTooltip) {\n if (enable3D) {\n this.currentPoints.push(data);\n }\n else if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function () {\n var item;\n var series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n series = item.series;\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n if (this.chart.highlightColor !== '' && !isNullOrUndefined(this.chart.highlightColor)) {\n element.setAttribute('fill', (highlight && this.chart.highlightColor !== 'transparent' ? this.chart.highlightColor : series.pointColorMapping !== '' ? (series.points[0]).color : series.points[pointIndex].color || series.interior));\n }\n else {\n element.setAttribute('opacity', (highlight && this.chart.highlightColor !== 'transparent' ? series.opacity / 2 : series.opacity).toString());\n }\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, crosshairEnabled, extraPoints, templatePoint, customTemplate) {\n if (crosshairEnabled === void 0) { crosshairEnabled = false; }\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var module = chart.tooltipModule || chart.tooltip3DModule ||\n chart.accumulationTooltipModule;\n if (!module || location === null) { // For the tooltip enable is false.\n removeElement(this.chart.element.id + '_tooltip');\n return;\n }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity ? chart.tooltip.opacity : ((this.chart.theme === 'Material3' || this.chart.theme === 'Material3Dark') ? 1 : 0.75),\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: this.control.tooltip.shared,\n crosshair: crosshairEnabled,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || this.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0),\n inverted: this.chart.requireInvertedAxis && series.isRectSeries,\n arrowPadding: this.text.length > 1 || this.chart.stockChart || (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null) ? 0 : 7,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isFixed: (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null),\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n enableRTL: chart.enableRtl,\n controlName: 'Chart',\n allowHighlight: chart.getModuleName() === 'chart' && !series.marker.allowHighlight,\n tooltipRender: function () {\n module.removeHighlight();\n module.highlightPoints();\n module.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n module.fadeOut(module.previousPoints);\n }\n }\n });\n this.svgTooltip.appendTo(this.getElement(this.element.id + '_tooltip'));\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = this.template;\n this.svgTooltip.controlName = 'Chart';\n this.svgTooltip.crosshair = crosshairEnabled;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart || (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null) ? 0 : 7;\n this.svgTooltip.allowHighlight = chart.getModuleName() === 'chart' && !series.marker.allowHighlight;\n this.svgTooltip.dataBind();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight();\n this.removeHighlightedMarker(data, true);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n var tooltipTemplate = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n var isTemplateRendered = tooltipTemplate && tooltipTemplate.innerText !== '
';\n this.stopAnimation();\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = +setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @returns {string}\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n gObj.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (e, position, scrollElem) {\n var _this = this;\n var cliRect = scrollElem.getBoundingClientRect();\n if (cliRect.left >= position.x - 20) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'left', e); }, 200);\n }\n else if (cliRect.left + scrollElem.clientWidth - 20 -\n (this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'right', e); }, 200);\n }\n if (cliRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'up', e); }, 200);\n }\n else if (cliRect.top + scrollElem.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElem.firstElementChild.scrollWidth > scrollElem.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'down', e); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElem, direction, e) {\n var rowIndex = -1;\n var colIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index')) : this.prevECIdxs.rowIndex;\n colIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex')) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (e && closest(e.target, '.e-headercontent'))\n return;\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n rowIndex -= 1;\n if (this.parent.frozenRows)\n rowIndex += this.parent.frozenRows + 1;\n rowIndex < 1 ? scrollElem.scrollTop = 0 : scrollElem.scrollTop -= this.parent.getRowByIndex(rowIndex).offsetHeight;\n break;\n case 'down':\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n scrollElem.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollHeight;\n }\n break;\n case 'left':\n if (colIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().left > 0))) {\n colIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < 1 ? scrollElem.scrollLeft = 0 : scrollElem.scrollLeft -= nextEle.offsetWidth;\n }\n break;\n case 'right':\n if (colIndex < this.parent.columns.length - 1) {\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < this.parent.columns.length - 1 ? scrollElem.scrollLeft += nextEle.offsetWidth : scrollElem.scrollLeft = scrollElem.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && colIndex > -1) {\n var e_1 = { target: this.parent.getCellFromIndex(rowIndex, colIndex) };\n this.endAFCell = e_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(e_1, rowIndex, colIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElem, direction, colInd, rowInd) {\n var nextEle = this.parent.getCellFromIndex(rowInd, direction === 'left' ? colInd - 1 : colInd + 1);\n if (nextEle && nextEle.classList.contains('e-hide')) {\n var siblingEles = nextEle.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextEle.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextEle = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextEle;\n }\n else {\n scrollElem.scrollLeft = 0;\n return null;\n }\n }\n return nextEle;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl && parseInt(width[3], 10) === 2)) ||\n (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl && parseInt(width[1], 10) === 2)) ||\n (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.isAutoFillSel = false;\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.isSelectAllRowCount(checkedLen)\n || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\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","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize')) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","//! 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('div',{staticClass:\"col-lg-12 control-section\",staticStyle:{\"padding\":\"10px\",\"position\":\"relative\"}},[_c('div',{staticStyle:{\"width\":\"100%\"}},[_c('ejs-grid',{ref:\"grid\",attrs:{\"id\":\"deadlineAlertGridId\",\"dataSource\":_vm.data,\"allowFiltering\":true,\"commandClick\":_vm.commandClick,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"toolbarClick\":_vm.toolbarClick,\"allowExcelExport\":true,\"excelExportComplete\":_vm.excelExportComplete,\"allowReordering\":true,\"allowSorting\":true,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionComplete\":_vm.actionComplete,\"actionBegin\":_vm.actionBegin,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell,\"query\":_vm.gridQuery,\"width\":\"100%\",\"height\":\"100%\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id\",\"width\":\"120\",\"isPrimaryKey\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"alertDate\",\"headerText\":\"Alert Date\",\"textAlign\":\"Right\",\"format\":_vm.dateFormatOptions,\"type\":\"date\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"alertType\",\"headerText\":\"Alert\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"clientName\",\"headerText\":\"Client\",\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"stateName\",\"headerText\":\"Country\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"companyName\",\"headerText\":\"Company\",\"width\":\"210\"}}),_c('e-column',{attrs:{\"field\":\"contractName\",\"headerText\":\"Contract\",\"width\":\"300\"}}),_c('e-column',{attrs:{\"field\":\"utilityTypeName\",\"headerText\":\"Commodity\",\"width\":\"150\",\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"tradeablePeriodName\",\"headerText\":\"Period\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"deafaultDeadlineDate\",\"headerText\":\"Default Deadline\",\"textAlign\":\"Right\",\"format\":_vm.dateFormatOptions,\"type\":\"date\",\"width\":\"180\"}}),_c('e-column',{attrs:{\"field\":\"openVolume\",\"headerText\":\"Open Volume\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n2\",\"width\":\"180\"}}),_c('e-column',{attrs:{\"field\":\"alertStatus\",\"headerText\":\"Status\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"headerText\":\"Actions\",\"width\":\"220\",\"textAlign\":\"left\",\"commands\":_vm.commands}})],1)],1)],1),_c('ejs-dialog',{ref:\"alertDialog\",attrs:{\"buttons\":_vm.alertDlgButtons,\"cssClass\":\"greyBackground\",\"id\":\"alertDialogDefDeadline\",\"visible\":false,\"animationSettings\":_vm.animationSettings,\"showCloseIcon\":_vm.showCloseIcon,\"open\":_vm.dialogOpen,\"close\":_vm.dialogClose,\"width\":_vm.alertWidth,\"header\":_vm.header,\"allowDragging\":_vm.draggable,\"position\":_vm.position}},[_c('h5',{staticClass:\"ml-5\",attrs:{\"id\":\"graphHeader\"}},[_vm._v(\" \"+_vm._s(_vm.alertType)+\" - Default Deadline\")]),_c('br'),_c('label',{staticClass:\"mr-5 float-right\"},[_vm._v(\"Alert issued on : \"+_vm._s(_vm.alertDate))]),_c('br'),_c('br'),_c('label',{staticClass:\"ml-5\"},[_vm._v(_vm._s(_vm.alertText))]),_c('br'),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"column ml-3\"},[_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Client\")]),_vm._v(\": \"+_vm._s(_vm.client))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Country\")]),_vm._v(\": \"+_vm._s(_vm.country))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Utility\")]),_vm._v(\": \"+_vm._s(_vm.utility))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Company\")]),_vm._v(\": \"+_vm._s(_vm.company))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Contract Name\")]),_vm._v(\": \"+_vm._s(_vm.contractName))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Contract ID\")]),_vm._v(\": \"+_vm._s(_vm.contractId))]),_c('br'),_c('br')]),_c('div',{staticClass:\"column ml-5\"},[_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Period\")]),_vm._v(\": \"+_vm._s(_vm.watchPeriod))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Default Deadline\")]),_vm._v(\": \"+_vm._s(_vm.deafaultDeadlineDate))]),_c('br'),_c('label',{staticClass:\"ml-5\"},[_c('b',[_vm._v(\"Open Volume\")]),_vm._v(\": \"+_vm._s(_vm.openVolume)+\" %\")]),_c('br')])])])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeadlineAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeadlineAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DeadlineAlert.vue?vue&type=template&id=917cdcba\"\nimport script from \"./DeadlineAlert.vue?vue&type=script&lang=js\"\nexport * from \"./DeadlineAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./DeadlineAlert.vue?vue&type=style&index=0&id=917cdcba&prod&lang=css\"\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","//! 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","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'mousewheel DOMMouseScroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"apptradingGroupReports\"}},[_vm._m(0),_c('ejs-tab',{ref:\"tradingGroupReportTabs\",attrs:{\"id\":\"element\",\"selectedItem\":_vm.selectedItem}},[_c('e-tabitems',[_c('e-tabitem',{attrs:{\"header\":_vm.headerText0,\"content\":_vm.PositionReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText1,\"content\":_vm.M2MReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText9,\"content\":_vm.VolumeReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText3,\"content\":_vm.CostAndPricingReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText4,\"content\":_vm.tradingGroupAlertsReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText5,\"content\":_vm.HedgingOverviewReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText6,\"content\":_vm.TicketsReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText8,\"content\":_vm.TicketsLogsReportTemplate}}),_c('e-tabitem',{attrs:{\"header\":_vm.headerText7,\"content\":_vm.hypotheticalTradesTemplate}})],1)],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-subheader\"},[_c('h5',{attrs:{\"id\":\"headertradingGroup\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"niceAndNeat\"}},[_c('div',{staticClass:\"row\",attrs:{\"id\":\"tradingGroupOveriew\"}},[_c('div',{staticClass:\"e-card\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-8\",staticStyle:{\"padding\":\"2%\"},attrs:{\"id\":\"tradingGroupInfo\"}},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"contractNames\",\"name\":\"contractNames\",\"multiline\":true,\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Contracts\"},model:{value:(_vm.data.contractNames),callback:function ($$v) {_vm.$set(_vm.data, \"contractNames\", $$v)},expression:\"data.contractNames\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-datepicker',{attrs:{\"id\":\"startDate\",\"name\":\"startDate\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Start Date\",\"firstDayOfWeek\":1,\"format\":\"dd/MM/yyyy\"},model:{value:(_vm.data.startDate),callback:function ($$v) {_vm.$set(_vm.data, \"startDate\", $$v)},expression:\"data.startDate\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"country\",\"name\":\"country\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Country\"},on:{\"change\":_vm.checkCountry},model:{value:(_vm.countryName),callback:function ($$v) {_vm.countryName=$$v},expression:\"countryName\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-datepicker',{attrs:{\"id\":\"endDate\",\"name\":\"endDate\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"End Date\",\"firstDayOfWeek\":1,\"format\":\"dd/MM/yyyy\"},model:{value:(_vm.data.endDate),callback:function ($$v) {_vm.$set(_vm.data, \"endDate\", $$v)},expression:\"data.endDate\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"utility\",\"name\":\"utility\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Utility\"},model:{value:(_vm.data.utility),callback:function ($$v) {_vm.$set(_vm.data, \"utility\", $$v)},expression:\"data.utility\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"supplier\",\"name\":\"supplier\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Supplier\"},model:{value:(_vm.data.supplier),callback:function ($$v) {_vm.$set(_vm.data, \"supplier\", $$v)},expression:\"data.supplier\"}})],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"annualVolume\",\"name\":\"annualVolume\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Annual Volume\",\"format\":\"n2\"},model:{value:(_vm.data.annualVolume),callback:function ($$v) {_vm.$set(_vm.data, \"annualVolume\", $$v)},expression:\"data.annualVolume\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"alerts\",\"name\":\"alerts\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Alerts\"},model:{value:(_vm.data.alerts),callback:function ($$v) {_vm.$set(_vm.data, \"alerts\", $$v)},expression:\"data.alerts\"}})],1),(_vm.showPriceAreaSectionPosition)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-textbox',{attrs:{\"id\":\"pricingAreaNames\",\"name\":\"pricingAreaNames\",\"disabled\":true,\"width\":\"80%\",\"floatLabelType\":\"Auto\",\"placeholder\":\"Price Areas\"},model:{value:(_vm.pricingAreaNames),callback:function ($$v) {_vm.pricingAreaNames=$$v},expression:\"pricingAreaNames\"}})],1):_vm._e()])]),_c('div',{staticClass:\"col-lg-4 pt-5\",attrs:{\"id\":\"buttons\"}},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"col mt-5 mb-2 d-flex justify-content-center\"},[_c('ejs-button',{attrs:{\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.btnDownloadFullReport($event)}}},[_vm._v(\"Full Position Report\")])],1)]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"col mt-3 mb-4 d-flex justify-content-center\"},[_c('ejs-button',{attrs:{\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.btnDownloadPositionReport($event)}}},[_vm._v(\"Position Summary\")])],1)])])])])]),_c('div',{staticClass:\"row\",attrs:{\"id\":\"PositionData\"}},[_c('div',{staticClass:\"e-card mt-2\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"col-sm-2 m-2\"},[_c('ejs-dropdownlist',{ref:\"reportingView\",attrs:{\"id\":\"dplReportingView\",\"name\":\"dplReportingView\",\"dataSource\":_vm.reportingView,\"fields\":{text: 'name', value: 'id' },\"select\":_vm.onReportViewSelect,\"placeholder\":\"Reporting View\",\"floatLabelType\":\"Auto\"}})],1),_c('div',{staticClass:\"col-sm-3 m-2 d-flex\"},[_c('ejs-dropdownlist',{ref:\"dplCurrency\",attrs:{\"id\":\"currency\",\"name\":\"currency\",\"change\":_vm.onCurrencyChange,\"dataSource\":_vm.currencies,\"fields\":{text: 'name', value: 'currencyId' },\"placeholder\":\"Currency\",\"floatLabelType\":\"Auto\",\"showClearButton\":true},model:{value:(_vm.data.currencyId),callback:function ($$v) {_vm.$set(_vm.data, \"currencyId\", $$v)},expression:\"data.currencyId\"}}),_c('ejs-checkbox',{attrs:{\"cssClass\":\"postionCheck check-d\",\"change\":_vm.onCheckPostionDefault,\"label\":\"Default Mechanism\",\"id\":\"positionSummaryCheck\",\"name\":\"checkName\",\"floatLabelType\":\"Auto\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.gridData,\"allowPaging\":false,\"allowResizing\":true,\"allowReordering\":false,\"allowSorting\":false,\"autoFit\":false,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"yearName\",\"headerText\":\"Year\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"totalContractedVolumeInContractTradingUnit\",\"headerText\":\"Total Contracted Volume\",\"format\":\"n2\"}}),_c('e-column',{attrs:{\"headerText\":\"FIXED\",\"columns\":_vm.fixedColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"OPEN\",\"columns\":_vm.openColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"M2M\",\"columns\":_vm.m2mColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"Reference\",\"columns\":_vm.referenceColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"Variance to Reference\",\"columns\":_vm.varianceColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"YoY\",\"columns\":_vm.YoYColumns,\"textAlign\":\"Center\"}})],1)],1)],1)])])]),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"additionalComponents\"}},[_c('div',{attrs:{\"id\":\"positionSpinner\"}})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PositionReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PositionReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PositionReportTemplate.vue?vue&type=template&id=043f1f23&scoped=true\"\nimport script from \"./PositionReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./PositionReportTemplate.vue?vue&type=script&lang=js\"\nimport style1 from \"./PositionReportTemplate.vue?vue&type=style&index=1&id=043f1f23&prod&lang=css\"\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 \"043f1f23\",\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('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('div',{staticClass:\"col-lg-12 control-section\",staticStyle:{\"padding\":\"10px\",\"position\":\"relative\"}},[_c('div',{attrs:{\"id\":\"m2mSpinner\"}}),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplType\",attrs:{\"id\":\"type\",\"name\":\"type\",\"change\":_vm.onTypeChange,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.products,\"fields\":{text: 'name', value: 'id' },\"index\":_vm.typeIndex,\"placeholder\":\"Product:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplCurrencyM2M\",attrs:{\"id\":\"currencyM2M\",\"name\":\"currency\",\"change\":_vm.onCurrencyChangeM2M,\"dataSource\":_vm.currenciesM2M,\"fields\":{text: 'name', value: 'currencyId' },\"placeholder\":\"Currency\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.data.currencyId),callback:function ($$v) {_vm.$set(_vm.data, \"currencyId\", $$v)},expression:\"data.currencyId\"}})],1),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplPriceArea\",attrs:{\"id\":\"priceArea\",\"name\":\"priceAreaName\",\"index\":_vm.typeIndex,\"actionComplete\":_vm.onActionComplete,\"change\":_vm.onPriceAreaChange,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.priceArea,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Price Area:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1):_vm._e(),_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-checkbox',{ref:\"m2mCheckDM\",attrs:{\"change\":_vm.onCheckM2mDefault,\"label\":\"Default Mechanism\",\"id\":\"M2mCheckDefault\",\"name\":\"checkName\",\"floatLabelType\":\"Auto\",\"cssClass\":\"m2mCheck check-d\"}})],1)]),_c('div',{staticClass:\"form-row justify-content-end \"},[_c('ejs-button',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.download($event)}}},[_vm._v(\"M2M Report\")])],1),_c('ejs-grid',{ref:\"monthGrid\",attrs:{\"dataSource\":_vm.gridMonthData,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Month\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"headerText\":\"TOTAL\",\"columns\":_vm.totalColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"FIXED\",\"columns\":_vm.fixedColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"OPEN\",\"columns\":_vm.openColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"M2M\",\"columns\":_vm.m2mColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"REFERENCE\",\"columns\":_vm.referenceColumns,\"textAlign\":\"Center\"}})],1)],1),_c('ejs-grid',{ref:\"quarterGrid\",attrs:{\"dataSource\":_vm.gridQuarterData,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Quarter\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"headerText\":\"TOTAL\",\"columns\":_vm.totalColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"FIXED\",\"columns\":_vm.fixedColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"OPEN\",\"columns\":_vm.openColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"M2M\",\"columns\":_vm.m2mColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"REFERENCE\",\"columns\":_vm.referenceColumns,\"textAlign\":\"Center\"}})],1)],1),_c('ejs-grid',{ref:\"seasonGrid\",attrs:{\"dataSource\":_vm.gridSeasonData,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Season\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"headerText\":\"TOTAL\",\"columns\":_vm.totalColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"FIXED\",\"columns\":_vm.fixedColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"OPEN\",\"columns\":_vm.openColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"M2M\",\"columns\":_vm.m2mColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"REFERENCE\",\"columns\":_vm.referenceColumns,\"textAlign\":\"Center\"}})],1)],1),_c('ejs-grid',{ref:\"calendarGrid\",attrs:{\"dataSource\":_vm.gridCalendarData,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Calendar Year\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"headerText\":\"TOTAL\",\"columns\":_vm.totalColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"FIXED\",\"columns\":_vm.fixedColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"OPEN\",\"columns\":_vm.openColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"M2M\",\"columns\":_vm.m2mColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"REFERENCE\",\"columns\":_vm.referenceColumns,\"textAlign\":\"Center\"}})],1)],1),_c('ejs-grid',{ref:\"fiscalGrid\",attrs:{\"dataSource\":_vm.gridFiscalData,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Fiscal Year\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"headerText\":\"TOTAL\",\"columns\":_vm.totalColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"FIXED\",\"columns\":_vm.fixedColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"OPEN\",\"columns\":_vm.openColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"M2M\",\"columns\":_vm.m2mColumns,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"REFERENCE\",\"columns\":_vm.referenceColumns,\"textAlign\":\"Center\"}})],1)],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./M2MReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./M2MReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./M2MReportTemplate.vue?vue&type=template&id=43254626\"\nimport script from \"./M2MReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./M2MReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./M2MReportTemplate.vue?vue&type=style&index=0&id=43254626&prod&lang=css\"\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('CRow',[_c('CCol',{attrs:{\"col\":\"\"}},[_c('div',{staticClass:\"col-lg-12 control-section\",staticStyle:{\"padding\":\"10px\",\"position\":\"relative\"}},[_c('div',{attrs:{\"id\":\"cappSpinner\"}}),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplYears\",attrs:{\"id\":\"years\",\"name\":\"years\",\"change\":_vm.onYearsChange,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.tradingGroupYears,\"fields\":{text: 'name', value: 'id' },\"index\":_vm.periodsIndex,\"placeholder\":\"Years\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplPeriods\",attrs:{\"id\":\"dplPeriods\",\"dataSource\":_vm.periods,\"placeholder\":\"Period\",\"floatLabelType\":\"Auto\",\"index\":_vm.periodsIndex,\"change\":_vm.onPeriodsChange,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplCurrencyCAP\",attrs:{\"id\":\"currencyCAP\",\"name\":\"currency\",\"change\":_vm.onCurrencyChangeCAP,\"dataSource\":_vm.currenciesCAP,\"fields\":{text: 'name', value: 'currencyId' },\"placeholder\":\"Currency\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.data.currencyId),callback:function ($$v) {_vm.$set(_vm.data, \"currencyId\", $$v)},expression:\"data.currencyId\"}})],1),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplPriceAreaCost\",attrs:{\"id\":\"priceAreaCost\",\"name\":\"priceAreaCostName\",\"enabled\":false,\"change\":_vm.onPriceAreaCostChange,\"floatLabelType\":\"Auto\",\"index\":_vm.periodsIndex,\"dataSource\":_vm.priceAreaCost,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Price Area:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1):_vm._e()]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplGraphTypes\",attrs:{\"id\":\"dplGraphTypes\",\"dataSource\":_vm.graphTypes,\"placeholder\":\"Type\",\"floatLabelType\":\"Auto\",\"index\":_vm.periodsIndex,\"change\":_vm.onGraphChange,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-4 ml-5 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplPerformanceTypes\",attrs:{\"id\":\"dplPerformanceTypes\",\"dataSource\":_vm.performanceTypes,\"placeholder\":\"Performance type\",\"floatLabelType\":\"Auto\",\"index\":_vm.periodsIndex,\"change\":_vm.onTypeChange,\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',[_c('ejs-checkbox',{attrs:{\"change\":_vm.onCheckCostAndPriceDefault,\"label\":\"Default Mechanism\",\"id\":\"CostAndPriceCheckDefalt\",\"name\":\"CostAndPriceCheckDefalt\",\"floatLabelType\":\"Auto\",\"cssClass\":\"costAndPriceCheck\"}})],1)]),_c('div',{staticClass:\"form-row justify-content-end \"},[_c('ejs-button',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.download($event)}}},[_vm._v(\"Price And Cost Performance Report\")])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.priceViewEnabled),expression:\"priceViewEnabled\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.LineGraph),expression:\"LineGraph\"}],staticClass:\"bc-white\"},[_c('ejs-chart',{attrs:{\"id\":\"container\",\"title\":_vm.title,\"legendSettings\":_vm.legendSettings,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"titleStyle\":_vm.titleStyle}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"m2m\",\"name\":\"M2M\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#001c55\"}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"reference\",\"name\":\"Reference\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#a35ea1\"}})],1)],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.CandleGraph),expression:\"CandleGraph\"}],staticClass:\"bc-white\"},[_c('ejs-chart',{attrs:{\"id\":\"container2\",\"title\":_vm.title,\"legendSettings\":_vm.legendSettings,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"titleStyle\":_vm.titleStyle,\"tooltipRender\":_vm.tooltipRenderWhisker}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"tooltipFormat\":\" \",\"type\":\"Candle\",\"xName\":\"periodName\",\"high\":\"highest\",\"low\":\"lowest\",\"open\":\"firstQuartile\",\"close\":\"thridQuartile\",\"name\":\"Box plot\",\"bearFillColor\":\"#B3edff\",\"bullFillColor\":\"#B3edff\",\"fill\":\"#B3edff\",\"opacity\":\"0.5\",\"enableSolidCandles\":_vm.enableSolidCandles,\"marker\":_vm.candleMarker,\"border\":_vm.border}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"median\",\"name\":\"Median\",\"opacity\":\"0\",\"marker\":_vm.medianMarker,\"fill\":\"#d9853c\"}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"m2m\",\"name\":\"M2M\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#001c55\"}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"reference\",\"name\":\"Reference\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#a35ea1\"}})],1)],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.StackedGraph),expression:\"StackedGraph\"}],staticClass:\"bc-white\"},[_c('ejs-chart',{attrs:{\"id\":\"container3\",\"title\":_vm.title,\"legendSettings\":_vm.legendSettings,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"tooltipRender\":_vm.tooltipRender,\"textRender\":_vm.textRender,\"titleStyle\":_vm.titleStyle,\"palettes\":_vm.palettes}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"StackingColumn\",\"xName\":\"periodName\",\"yName\":\"lowest\",\"name\":\" \",\"width\":\"2\",\"opacity\":\"0\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"StackingColumn\",\"xName\":\"periodName\",\"yName\":\"medianMin\",\"name\":\"Min-Median\",\"opacity\":\"0.7\",\"width\":\"2\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"StackingColumn\",\"xName\":\"periodName\",\"yName\":\"maxMedian\",\"name\":\"Median-Max\",\"opacity\":\"0.7\",\"width\":\"2\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"StackingLine\",\"xName\":\"periodName\",\"yName\":\"m2m\",\"name\":\"M2M\",\"width\":\"2\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesData,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"reference\",\"name\":\"Reference\",\"width\":\"2\",\"marker\":_vm.marker}})],1)],1)],1),_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.gridData,\"allowFiltering\":false,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Period\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"reference\",\"headerText\":\"Reference\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"m2m\",\"headerText\":\"Current M2M\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"lowest\",\"headerText\":\"Lowest\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"firstQuartile\",\"headerText\":\"1st Quartile\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"median\",\"headerText\":\"Median\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"thridQuartile\",\"headerText\":\"3rd Quartile\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"highest\",\"headerText\":\"Highest\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"firstQuartileMin\",\"visible\":false,\"headerText\":\"1Q-Min\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"medianFirstQuartile\",\"visible\":false,\"headerText\":\"Median-1Q\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"thridQuartileMedian\",\"visible\":false,\"headerText\":\"3Q-Median\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"highestThridQuartile\",\"visible\":false,\"headerText\":\"Max-3Q\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"medianMin\",\"visible\":false,\"textAlign\":\"Right\",\"headerText\":\"Median-Min\",\"type\":\"number\",\"format\":\"n3\"}}),_c('e-column',{attrs:{\"field\":\"maxMedian\",\"visible\":false,\"textAlign\":\"Right\",\"headerText\":\"Max-Median\",\"type\":\"number\",\"format\":\"n3\"}})],1)],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.costViewEnabled),expression:\"costViewEnabled\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.LineGraph),expression:\"LineGraph\"}],staticClass:\"bc-white\"},[_c('ejs-chart',{attrs:{\"id\":\"containerCost\",\"title\":_vm.title,\"legendSettings\":_vm.legendSettings,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"titleStyle\":_vm.titleStyle}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"m2mCost\",\"name\":\"M2M\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#001c55\"}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"referenceCost\",\"name\":\"Reference\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#a35ea1\"}})],1)],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.CandleGraph),expression:\"CandleGraph\"}],staticClass:\"bc-white\"},[_c('ejs-chart',{attrs:{\"id\":\"containerCost2\",\"title\":_vm.title,\"legendSettings\":_vm.legendSettings,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"tooltipRender\":_vm.tooltipRenderWhisker,\"titleStyle\":_vm.titleStyle}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"tooltipFormat\":\" \",\"type\":\"Candle\",\"xName\":\"periodName\",\"high\":\"highestCost\",\"low\":\"lowestCost\",\"open\":\"firstQuartileCost\",\"close\":\"thridQuartileCost\",\"name\":\"Box plot\",\"bearFillColor\":\"#B3edff\",\"bullFillColor\":\"#B3edff\",\"fill\":\"#B3edff\",\"opacity\":\"0.5\",\"enableSolidCandles\":_vm.enableSolidCandles,\"marker\":_vm.candleMarker,\"border\":_vm.border}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"medianCost\",\"name\":\"Median\",\"opacity\":\"0\",\"marker\":_vm.medianMarker,\"fill\":\"#d9853c\"}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"m2mCost\",\"name\":\"M2M\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#001c55\"}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"Line\",\"xName\":\"periodName\",\"yName\":\"referenceCost\",\"name\":\"Reference\",\"width\":\"2\",\"marker\":_vm.marker,\"fill\":\"#a35ea1\"}})],1)],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.StackedGraph),expression:\"StackedGraph\"}],staticClass:\"bc-white\"},[_c('ejs-chart',{attrs:{\"id\":\"containerCost3\",\"title\":_vm.title,\"legendSettings\":_vm.legendSettings,\"zoomSettings\":_vm.zoom,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"tooltipRender\":_vm.tooltipRender,\"tooltip\":_vm.tooltip,\"textRender\":_vm.textRender,\"titleStyle\":_vm.titleStyle,\"palettes\":_vm.palettes}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"StackingColumn\",\"xName\":\"periodName\",\"yName\":\"lowestCost\",\"name\":\" \",\"width\":\"2\",\"opacity\":\"0\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"StackingColumn\",\"xName\":\"periodName\",\"yName\":\"medianMinCost\",\"name\":\"Min-Median\",\"opacity\":\"0.7\",\"width\":\"2\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"StackingColumn\",\"xName\":\"periodName\",\"yName\":\"maxMedianCost\",\"name\":\"Median-Max\",\"opacity\":\"0.7\",\"width\":\"2\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.seriesDataCost,\"type\":\"StackingLine\",\"xName\":\"periodName\",\"yName\":\"m2mCost\",\"name\":\"M2M\",\"width\":\"2\",\"marker\":_vm.marker}})],1)],1)],1),_c('ejs-grid',{ref:\"costGrid\",attrs:{\"dataSource\":_vm.gridData,\"allowFiltering\":false,\"allowPaging\":true,\"allowTextWrap\":true,\"textWrapSettings\":_vm.wrapSettings,\"allowResizing\":true,\"query\":_vm.gridQuery,\"allowReordering\":true,\"allowSorting\":true,\"toolbar\":_vm.toolbar,\"pageSettings\":_vm.pageSettings,\"actionFailure\":_vm.actionFailure,\"filterSettings\":_vm.filterOptions}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"periodName\",\"headerText\":\"Period\",\"width\":\"120\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"referenceCost\",\"headerText\":\"Reference\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"m2mCost\",\"headerText\":\"Current M2M\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"lowestCost\",\"headerText\":\"Lowest\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"firstQuartileCost\",\"headerText\":\"1st Quartile\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"medianCost\",\"headerText\":\"Median\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"thridQuartileCost\",\"headerText\":\"3rd Quartile\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"highestCost\",\"headerText\":\"Highest\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"firstQuartileMinCost\",\"visible\":false,\"headerText\":\"1Q-Min\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"medianFirstQuartileCost\",\"visible\":false,\"headerText\":\"Median-1Q\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"thridQuartileMedianCost\",\"visible\":false,\"headerText\":\"3Q-Median\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"highestThridQuartileCost\",\"visible\":false,\"headerText\":\"Max-3Q\",\"textAlign\":\"Right\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"medianMinCost\",\"textAlign\":\"Right\",\"visible\":false,\"headerText\":\"Median-Min\",\"type\":\"number\",\"format\":\"n0\"}}),_c('e-column',{attrs:{\"field\":\"maxMedianCost\",\"textAlign\":\"Right\",\"visible\":false,\"headerText\":\"Max-Median\",\"type\":\"number\",\"format\":\"n0\"}})],1)],1)],1)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CostAndPricingReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CostAndPricingReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CostAndPricingReportTemplate.vue?vue&type=template&id=7293d88f\"\nimport script from \"./CostAndPricingReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./CostAndPricingReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./CostAndPricingReportTemplate.vue?vue&type=style&index=0&id=7293d88f&prod&lang=css\"\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('h5',{staticClass:\"mt-3 ml-3 activeTriggerHeader\"},[_c('u',[_vm._v(\"HIT TRIGGERS \"+_vm._s(_vm.hit))])]),_c('TriggerHitAlert',{attrs:{\"reportTradingGroupId\":_vm.reportTradingGroupId}}),_c('h5',{staticClass:\"ml-3 dueLiveTriggerHeader\"},[_c('u',[_vm._v(\"TRIGGERS STATUS \"+_vm._s(_vm.status))])]),_c('StatusAlert',{attrs:{\"reportTradingGroupId\":_vm.reportTradingGroupId}}),_c('h5',{staticClass:\"ml-3 expiredTriggerHeader\"},[_c('u',[_vm._v(\"DEFAULT DEADLINES \"+_vm._s(_vm.deadline))])]),_c('DeadlineAlert',{attrs:{\"reportTradingGroupId\":_vm.reportTradingGroupId}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TradingGroupAlertsReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TradingGroupAlertsReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TradingGroupAlertsReportTemplate.vue?vue&type=template&id=a7d59d24\"\nimport script from \"./TradingGroupAlertsReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./TradingGroupAlertsReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./TradingGroupAlertsReportTemplate.vue?vue&type=style&index=0&id=a7d59d24&prod&lang=css\"\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:\"row\"},[_c('div',{attrs:{\"id\":\"ticketsSpinner\"}}),_c('div',{staticClass:\"e-card mt-2\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-2 mt-3\"},[_c('ejs-dropdownlist',{ref:\"dplCurrencyTrade\",attrs:{\"id\":\"currencyTrade\",\"name\":\"currency\",\"change\":_vm.onCurrencyChangeTrade,\"dataSource\":_vm.currenciesTrade,\"fields\":{text: 'name', value: 'currencyId' },\"placeholder\":\"Currency\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.data.currencyId),callback:function ($$v) {_vm.$set(_vm.data, \"currencyId\", $$v)},expression:\"data.currencyId\"}})],1),_c('div',{staticClass:\"col-sm-2 mt-3 d-flex\"},[_c('ejs-checkbox',{ref:\"tradeCheckDM\",attrs:{\"change\":_vm.onCheckTradeDefault,\"label\":\"Default Mechanism\",\"id\":\"TradeCheckDefault\",\"name\":\"checkName\",\"floatLabelType\":\"Auto\",\"cssClass\":\"tradeCheck check-d\"}})],1),_c('div',{staticClass:\"col-sm-5\"}),_c('div',{staticClass:\"col-sm-2 mt-3\"},[_c('ejs-button',{attrs:{\"cssClass\":\"e-primary btn-download\"},nativeOn:{\"click\":function($event){return _vm.btnTradeReportDownload($event)}}},[_vm._v(\"Trade Report\")])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.gridData,\"filterSettings\":_vm.filterOptions,\"allowPaging\":false,\"allowResizing\":true,\"allowReordering\":false,\"allowSorting\":false,\"allowFiltering\":true,\"autoFit\":true,\"toolbarClick\":_vm.toolbarClick,\"toolbar\":_vm.toolbar,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"tradeReference\",\"headerText\":\"Trade ID\",\"width\":\"120\",\"type\":\"number\"}}),_c('e-column',{attrs:{\"field\":\"priceAreaName\",\"headerText\":\"Price Area\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"contractName\",\"headerText\":\"Contract Name\",\"width\":\"300\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"tradeDate\",\"headerText\":\"Trade Date\",\"type\":\"date\",\"format\":\"dd/MM/yyyy\"}}),_c('e-column',{attrs:{\"field\":\"ticketPeriod\",\"headerText\":\"Trade Period\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"product\",\"headerText\":\"Product\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"headerText\":\"Complex trade\",\"field\":\"isComplexGroup\",\"textAlign\":\"Center\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"headerText\":\"Volume\",\"columns\":_vm.volumeColumnes,\"textAlign\":\"Center\",\"type\":\"number\"}}),_c('e-column',{attrs:{\"field\":\"price\",\"headerText\":\"Price\",\"format\":\"n3\",\"textAlign\":\"Center\",\"type\":\"number\"}}),_c('e-column',{attrs:{\"field\":\"tradedBy\",\"headerText\":\"Traded by\",\"textAlign\":\"Center\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"confirmationReference\",\"headerText\":\"Confirmation Reference\",\"textAlign\":\"Center\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"note\",\"headerText\":\"Supplementary Note\",\"textAlign\":\"Center\",\"type\":\"string\"}})],1)],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TicketsReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TicketsReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TicketsReportTemplate.vue?vue&type=template&id=f6db29d8\"\nimport script from \"./TicketsReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./TicketsReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./TicketsReportTemplate.vue?vue&type=style&index=0&id=f6db29d8&prod&lang=css\"\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',{attrs:{\"id\":\"hedgingMain\"}},[_c('div',{staticClass:\"e-card\"},[_c('div',{staticClass:\"row\",staticStyle:{\"padding\":\"2%\"},attrs:{\"id\":\"hedgingForm\"}},[_c('div',{staticClass:\"col-lg-8\"},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"hedgingYears\",attrs:{\"id\":\"hedgingYears\",\"name\":\"hedgingYears\",\"dataSource\":_vm.availableYears,\"select\":_vm.onYearSelect,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Years\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"hedgingView\",attrs:{\"id\":\"hedgingView\",\"name\":\"hedgingView\",\"dataSource\":_vm.views,\"index\":_vm.firstIndex,\"select\":_vm.onViewSelect,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"View\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplCurrencyHedg\",attrs:{\"id\":\"currencyHedg\",\"name\":\"currency\",\"change\":_vm.onCurrencyChangeHedg,\"dataSource\":_vm.currenciesHedg,\"fields\":{text: 'name', value: 'currencyId' },\"placeholder\":\"Currency\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true},model:{value:(_vm.data.currencyId),callback:function ($$v) {_vm.$set(_vm.data, \"currencyId\", $$v)},expression:\"data.currencyId\"}})],1),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"}):_vm._e(),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplPriceAreaHedg\",attrs:{\"id\":\"priceAreaHedg\",\"name\":\"priceAreaHedgName\",\"index\":_vm.firstIndex,\"actionComplete\":_vm.onActionComplete,\"change\":_vm.onPriceAreaHedgChange,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.priceAreaHedg,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Price Area:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1):_vm._e(),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group check-dh\"}):_vm._e()]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"hedgingProduct\",attrs:{\"id\":\"hedgingProduct\",\"name\":\"hedgingProduct\",\"index\":_vm.firstIndex,\"dataSource\":_vm.products,\"dataBound\":_vm.onProductSelect,\"select\":_vm.onProductSelect,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Product\",\"floatLabelType\":\"Auto\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"col-sm-2 justify-content-end\"},[_c('ejs-button',{attrs:{\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.download($event)}}},[_vm._v(\"Hedging Overview 100% stacked\")])],1)]),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-checkbox',{ref:\"hedgCheckDM\",attrs:{\"change\":_vm.onCheckHedingDefault,\"label\":\"Default Mechanism\",\"id\":\"HedingCheckDefault\",\"name\":\"checkName\",\"floatLabelType\":\"Auto\",\"cssClass\":\"hedingCheck check-d\"}})],1)])]),_c('div',{staticClass:\"col-lg-4\"})]),_c('div',{staticClass:\"row\",staticStyle:{\"max-width\":\"100%\"},attrs:{\"id\":\"hedgingGraph\"}},[_c('div',{staticClass:\"col\"},[_c('ejs-chart',{ref:\"priceChart\",staticStyle:{\"margin-top\":\"10px\"},attrs:{\"id\":\"hedgingChartContainer\",\"title\":_vm.title,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"palettes\":_vm.palettes,\"legendSettings\":_vm.legendSettings}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.fixedPriceDataGraph,\"type\":\"StackingColumn\",\"xName\":\"period\",\"yName\":\"value\",\"name\":\"Fixed\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.openPriceDataGraph,\"type\":\"StackingColumn\",\"xName\":\"period\",\"yName\":\"value\",\"name\":\"Open\",\"marker\":_vm.openMarker}})],1)],1)],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"gridOpenPrice\",attrs:{\"dataSource\":_vm.openGridData,\"id\":\"gridOpenPrice\",\"dataBound\":_vm.dataBoundOpenPrice}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col ml-3 mr-3\"},[_c('ejs-grid',{ref:\"gridFixedPrice\",attrs:{\"dataSource\":_vm.fixedGridData,\"id\":\"gridFixedPrice\",\"dataBound\":_vm.dataBoundFixedPrice}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"gridM2mPrice\",attrs:{\"dataSource\":_vm.m2mGridData,\"id\":\"gridM2mPrice\",\"dataBound\":_vm.dataBoundM2mPrice}})],1)])]),_c('div',{attrs:{\"id\":\"hedgingSpinner\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HedgingOverviewReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HedgingOverviewReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./HedgingOverviewReportTemplate.vue?vue&type=template&id=04d97a6c\"\nimport script from \"./HedgingOverviewReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./HedgingOverviewReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./HedgingOverviewReportTemplate.vue?vue&type=style&index=0&id=04d97a6c&prod&lang=css\"\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',{attrs:{\"id\":\"hedgingMain\"}},[_c('div',{staticClass:\"e-card\"},[_c('div',{staticClass:\"row\",staticStyle:{\"padding\":\"2%\"},attrs:{\"id\":\"hedgingForm\"}},[_c('div',{staticClass:\"col-lg-8\"},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"hedgingYears\",attrs:{\"id\":\"hedgingYears\",\"name\":\"hedgingYears\",\"dataSource\":_vm.availableYears,\"select\":_vm.onYearSelect,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Years\",\"floatLabelType\":\"Auto\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"hedgingView\",attrs:{\"id\":\"hedgingView\",\"name\":\"hedgingView\",\"dataSource\":_vm.views,\"index\":_vm.firstIndex,\"select\":_vm.onViewSelect,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"View\",\"floatLabelType\":\"Auto\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplCurrencyHyp\",attrs:{\"id\":\"currencyHypTrade\",\"name\":\"currencyHypTrade\",\"change\":_vm.onCurrencyChangeHypTrade,\"dataSource\":_vm.currenciesHypTrade,\"fields\":{text: 'name', value: 'currencyId' },\"placeholder\":\"Currency\",\"floatLabelType\":\"Auto\",\"showClearButton\":true},model:{value:(_vm.data.currencyId),callback:function ($$v) {_vm.$set(_vm.data, \"currencyId\", $$v)},expression:\"data.currencyId\"}})],1),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"}):_vm._e(),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"dplPriceAreaHypo\",attrs:{\"id\":\"priceAreaHypo\",\"name\":\"priceAreaHypoName\",\"change\":_vm.onPriceAreaHypoChange,\"actionComplete\":_vm.onActionComplete,\"index\":_vm.firstIndex,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.priceAreaHypo,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Price Area:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1):_vm._e(),(_vm.showPriceAreaSection)?_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group check-dh\"}):_vm._e()]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-dropdownlist',{ref:\"hedgingProduct\",attrs:{\"id\":\"hedgingProduct\",\"name\":\"hedgingProduct\",\"index\":_vm.firstIndex,\"dataSource\":_vm.products,\"dataBound\":_vm.onProductSelect,\"select\":_vm.onProductSelect,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Product\",\"floatLabelType\":\"Auto\"}})],1),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('div',{staticClass:\"col-sm-2 justify-content-end\"},[_c('ejs-button',{attrs:{\"cssClass\":\"e-primary\"},nativeOn:{\"click\":function($event){return _vm.download($event)}}},[_vm._v(\"Hypothetical Position Report\")])],1)]),_c('div',{staticClass:\"form-group col-md-6 d-flex justify-content-center input-group\"},[_c('ejs-checkbox',{ref:\"hypoCheckDM\",attrs:{\"change\":_vm.onCheckHypoDefault,\"label\":\"Default Mechanism\",\"id\":\"HypoCheckDefault\",\"name\":\"checkName\",\"floatLabelType\":\"Auto\",\"cssClass\":\"hypoCheck check-d\"}})],1)])]),_c('div',{staticClass:\"col-lg-4\"})]),_c('div',{staticClass:\"row\",staticStyle:{\"max-width\":\"100%\"},attrs:{\"id\":\"hedgingGraph\"}},[_c('div',{staticClass:\"col\"},[_c('ejs-chart',{ref:\"priceChart\",staticStyle:{\"margin-top\":\"10px\"},attrs:{\"id\":\"hypoChartContainer\",\"title\":_vm.title,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"palettes\":_vm.palettes,\"legendSettings\":_vm.legendSettings,\"textRender\":_vm.textRender}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.fixedPriceDataGraph,\"type\":\"StackingColumn\",\"xName\":\"period\",\"yName\":\"value\",\"name\":\"Fixed\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.impliedDataGraph,\"type\":\"StackingColumn\",\"xName\":\"period\",\"yName\":\"value\",\"name\":\"Implied\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.openPriceDataGraph,\"type\":\"StackingColumn\",\"xName\":\"period\",\"yName\":\"value\",\"name\":\"Open\",\"marker\":_vm.openMarker}})],1)],1)],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"gridOpenPrice\",attrs:{\"dataSource\":_vm.openGridData,\"id\":\"gridOpenPrice\",\"dataBound\":_vm.dataBoundOpenPrice}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col ml-3 mr-3\"},[_c('ejs-grid',{ref:\"gridFixedPrice\",attrs:{\"dataSource\":_vm.fixedGridData,\"id\":\"gridFixedPrice\",\"dataBound\":_vm.dataBoundFixedPrice}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"gridM2mPrice\",attrs:{\"dataSource\":_vm.m2mGridData,\"id\":\"gridM2mPrice\",\"dataBound\":_vm.dataBoundM2mPrice}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"gridImplied\",attrs:{\"dataSource\":_vm.impliedGridData,\"id\":\"gridImplied\",\"dataBound\":_vm.dataBoundImplied}})],1)])]),_c('div',{staticStyle:{\"margin-top\":\"10px\"}},[_c('ejs-button',{ref:\"btnAddWhatIf\",attrs:{\"id\":\"btnAddWhatIf\",\"isPrimary\":true},nativeOn:{\"click\":function($event){return _vm.modalBtnClick($event)}}},[_vm._v(\"Add 'What If?' Position\")]),_c('ejs-button',{staticStyle:{\"margin-left\":\"10px\"},attrs:{\"id\":\"btnClearWhatIf\"},nativeOn:{\"click\":function($event){return _vm.clearWhatIf($event)}}},[_vm._v(\"Clear 'What If?' Position\")])],1),_c('div',{attrs:{\"id\":\"hedgingSpinner\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HypotheticalTradeReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HypotheticalTradeReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./HypotheticalTradeReportTemplate.vue?vue&type=template&id=6e1f1710\"\nimport script from \"./HypotheticalTradeReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./HypotheticalTradeReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./HypotheticalTradeReportTemplate.vue?vue&type=style&index=0&id=6e1f1710&prod&lang=css\"\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:\"row\"},[_c('div',{attrs:{\"id\":\"ticketsLogsSpinner\"}}),_c('div',{staticClass:\"e-card mt-2\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.tradeLogData,\"allowPaging\":true,\"allowResizing\":true,\"allowReordering\":false,\"allowSorting\":false,\"allowFiltering\":true,\"allowExcelExport\":true,\"filterSettings\":_vm.filterOptions,\"pageSettings\":_vm.pageSettings,\"autoFit\":true,\"excelExportComplete\":_vm.excelExportComplete,\"excelQueryCellInfo\":_vm.excelQueryCellInfo,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"toolbarClick\":_vm.toolbarClick,\"toolbar\":_vm.toolbar,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"ticketLogId\",\"headerText\":\"Trade Log ID\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"field\":\"ticketId\",\"headerText\":\"Trade ID\"}}),_c('e-column',{attrs:{\"field\":\"priceAreaName\",\"headerText\":\"Price Area\",\"width\":\"150\"}}),_c('e-column',{attrs:{\"field\":\"tradeDate\",\"headerText\":\"Trade Date\",\"type\":\"date\",\"format\":_vm.dateFormatOptions}}),_c('e-column',{attrs:{\"field\":\"contractTradeablePeriodName\",\"headerText\":\"Trade Period\"}}),_c('e-column',{attrs:{\"field\":\"productName\",\"headerText\":\"Product\"}}),_c('e-column',{attrs:{\"headerText\":\"Complex trade\",\"field\":\"partOfComplexTrade\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"Locked Volume\",\"field\":\"lockedVolume\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"Trading Unit\",\"field\":\"volumeUnitName\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"Volume Hedged Percentage\",\"field\":\"volumeHedgedPercentage\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"Market Volume Unit\",\"field\":\"tradingUnitName\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"price\",\"headerText\":\"Price\",\"format\":\"n3\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"tradedBy\",\"headerText\":\"Traded by\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"confirmationReference\",\"headerText\":\"Confirmation Reference\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"supplementaryNote\",\"headerText\":\"Supplementary Note\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"deleted\",\"headerText\":\"Is Deleted\",\"textAlign\":\"Center\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"childTicket\",\"headerText\":\"Is Child Ticket\",\"textAlign\":\"Center\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"ticketLogDate\",\"headerText\":\"Log Date\",\"textAlign\":\"Left\",\"type\":\"date\",\"format\":_vm.dateFormatOptions}}),_c('e-column',{attrs:{\"field\":\"ticketLogDate\",\"headerText\":\"Log Time\",\"textAlign\":\"Left\",\"type\":\"string\"}}),_c('e-column',{attrs:{\"field\":\"userName\",\"headerText\":\"User\",\"textAlign\":\"Left\",\"type\":\"string\"}})],1)],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TicketsLogsReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TicketsLogsReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TicketsLogsReportTemplate.vue?vue&type=template&id=1fed1bc8&scoped=true\"\nimport script from \"./TicketsLogsReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./TicketsLogsReportTemplate.vue?vue&type=script&lang=js\"\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 \"1fed1bc8\",\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:\"row\"},[_c('div',{attrs:{\"id\":\"volumeSpinner\"}}),_c('div',{staticClass:\"e-card mt-2\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-2 mt-3\"},[_c('ejs-dropdownlist',{ref:\"dplTypeVolume\",attrs:{\"id\":\"typeVolume\",\"name\":\"typeVolume\",\"change\":_vm.onTypeVolumeChange,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.productsVolume,\"fields\":{text: 'name', value: 'id' },\"index\":_vm.typeIndex,\"placeholder\":\"Product:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}})],1),_c('div',{staticClass:\"col-sm-2 mt-3\"},[(_vm.showPriceAreaSection)?_c('ejs-dropdownlist',{ref:\"dplPriceAreaVol\",attrs:{\"id\":\"priceAreaVol\",\"name\":\"priceAreaVolName\",\"actionComplete\":_vm.onActionComplete,\"index\":_vm.typeIndex,\"change\":_vm.onPriceAreaVolChange,\"floatLabelType\":\"Auto\",\"dataSource\":_vm.priceAreaVol,\"fields\":{text: 'name', value: 'id' },\"placeholder\":\"Price Area:\",\"allowFiltering\":_vm.allowFiltering,\"showClearButton\":true}}):_vm._e()],1),_c('div',{staticClass:\"col-sm-5 check-vol\"}),_c('div',{staticClass:\"col-sm-2 mt-3\"},[_c('ejs-button',{attrs:{\"cssClass\":\"e-primary btn-download\"},nativeOn:{\"click\":function($event){return _vm.btnVolumeReportDownload($event)}}},[_vm._v(\"Volume Report\")])],1)]),_c('div',{staticClass:\"row\"},[(_vm.showGrid)?_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"grid\",attrs:{\"dataSource\":_vm.gridData,\"filterSettings\":_vm.filterOptions,\"allowPaging\":false,\"allowResizing\":true,\"allowReordering\":false,\"allowSorting\":false,\"allowFiltering\":true,\"autoFit\":true,\"toolbarClick\":_vm.toolbarClick,\"toolbar\":_vm.toolbar,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"monthName\",\"headerText\":\"Month\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"headerText\":\"therms\",\"columns\":_vm.thermsColumnes,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"th/d\",\"columns\":_vm.thdColumnes,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"kWh\",\"columns\":_vm.kWhColumnes,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"%\",\"columns\":_vm.PercentageColumnes,\"textAlign\":\"Center\"}})],1)],1)],1):_vm._e(),(_vm.showGridel)?_c('div',{staticClass:\"col m-3\"},[_c('ejs-grid',{ref:\"gridel\",attrs:{\"dataSource\":_vm.gridData,\"filterSettings\":_vm.filterOptions,\"allowPaging\":false,\"allowResizing\":true,\"allowReordering\":false,\"allowSorting\":false,\"allowFiltering\":true,\"autoFit\":true,\"toolbarClick\":_vm.toolbarClick,\"toolbar\":_vm.toolbar,\"actionBegin\":_vm.actionBegin,\"actionComplete\":_vm.actionComplete,\"actionFailure\":_vm.actionFailure,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"monthName\",\"headerText\":\"Month\",\"width\":\"120\"}}),_c('e-column',{attrs:{\"headerText\":\"MW\",\"columns\":_vm.MWColumnes,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"MWh\",\"columns\":_vm.MWhColumnes,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"kWh\",\"columns\":_vm.kWhColumnes,\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"headerText\":\"%\",\"columns\":_vm.PercentageColumnes,\"textAlign\":\"Center\"}})],1)],1)],1):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolumeReportTemplate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolumeReportTemplate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VolumeReportTemplate.vue?vue&type=template&id=9dc5c796\"\nimport script from \"./VolumeReportTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./VolumeReportTemplate.vue?vue&type=script&lang=js\"\nimport style0 from \"./VolumeReportTemplate.vue?vue&type=style&index=0&id=9dc5c796&prod&lang=css\"\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","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ATGReportTabs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ATGReportTabs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ATGReportTabs.vue?vue&type=template&id=685fdc5e&scoped=true\"\nimport script from \"./ATGReportTabs.vue?vue&type=script&lang=js\"\nexport * from \"./ATGReportTabs.vue?vue&type=script&lang=js\"\nimport style1 from \"./ATGReportTabs.vue?vue&type=style&index=1&id=685fdc5e&prod&lang=css\"\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 \"685fdc5e\",\n null\n \n)\n\nexport default component.exports","//! 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","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StackedColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-stacked-columns';\n }\n }\n});\nexport var StackedColumnsPlugin = {\n name: 'e-stacked-columns',\n install: function (Vue) {\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n }\n};\nexport var StackedColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stacked-column';\n }\n }\n});\nexport var StackedColumnPlugin = {\n name: 'e-stacked-column',\n install: function (Vue) {\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregateColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS Grid.\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregatesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-aggregates';\n }\n }\n});\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-aggregate';\n }\n }\n});\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { StackedColumnsDirective, StackedColumnDirective, StackedColumnsPlugin, StackedColumnPlugin } from './stacked-column.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'autoFit', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'cssClass', 'currencyCode', 'currentAction', 'currentViewData', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'emptyRecordTemplate', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableStickyHeader', 'enableVirtualMaskRow', 'enableVirtualization', 'exportGrids', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'loadingIndicator', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'showHider', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenAdaptiveDialog', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportDetailTemplate', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * \n * ```\n */\nexport var GridComponent = vueDefineComponent({\n name: 'GridComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Grid({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-columns\": { \"e-column\": { \"e-stacked-columns\": \"e-stacked-column\" } }, \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } },\n tagNameMapper: { \"e-stacked-columns\": \"e-columns\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addRecord: function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n },\n addShimmerEffect: function () {\n return this.ej2Instances.addShimmerEffect();\n },\n autoFitColumns: function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n },\n batchAsyncUpdate: function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n },\n batchUpdate: function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n },\n calculatePageSizeByParentHeight: function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n },\n changeDataSource: function (dataSource, columns) {\n return this.ej2Instances.changeDataSource(dataSource, columns);\n },\n clearCellSelection: function () {\n return this.ej2Instances.clearCellSelection();\n },\n clearFiltering: function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n },\n clearGrouping: function () {\n return this.ej2Instances.clearGrouping();\n },\n clearRowSelection: function () {\n return this.ej2Instances.clearRowSelection();\n },\n clearSelection: function () {\n return this.ej2Instances.clearSelection();\n },\n clearSorting: function () {\n return this.ej2Instances.clearSorting();\n },\n closeEdit: function () {\n return this.ej2Instances.closeEdit();\n },\n copy: function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n },\n csvExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n dataReady: function () {\n return this.ej2Instances.dataReady();\n },\n deleteRecord: function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n },\n deleteRow: function (tr) {\n return this.ej2Instances.deleteRow(tr);\n },\n destroyTemplate: function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n },\n detailCollapseAll: function () {\n return this.ej2Instances.detailCollapseAll();\n },\n detailExpandAll: function () {\n return this.ej2Instances.detailExpandAll();\n },\n editCell: function (index, field) {\n return this.ej2Instances.editCell(index, field);\n },\n enableToolbarItems: function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n },\n endEdit: function () {\n return this.ej2Instances.endEdit();\n },\n excelExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n extendRequiredModules: function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n },\n filterByColumn: function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n },\n getBatchChanges: function () {\n return this.ej2Instances.getBatchChanges();\n },\n getCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n },\n getColumnByField: function (field) {\n return this.ej2Instances.getColumnByField(field);\n },\n getColumnByUid: function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n },\n getColumnFieldNames: function () {\n return this.ej2Instances.getColumnFieldNames();\n },\n getColumnHeaderByField: function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n },\n getColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n },\n getColumnHeaderByUid: function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n },\n getColumnIndexByField: function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n },\n getColumnIndexByUid: function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n },\n getColumns: function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n },\n getContent: function () {\n return this.ej2Instances.getContent();\n },\n getContentTable: function () {\n return this.ej2Instances.getContentTable();\n },\n getCurrentViewRecords: function () {\n return this.ej2Instances.getCurrentViewRecords();\n },\n getDataModule: function () {\n return this.ej2Instances.getDataModule();\n },\n getDataRows: function () {\n return this.ej2Instances.getDataRows();\n },\n getFilterUIInfo: function () {\n return this.ej2Instances.getFilterUIInfo();\n },\n getFilteredRecords: function () {\n return this.ej2Instances.getFilteredRecords();\n },\n getFooterContent: function () {\n return this.ej2Instances.getFooterContent();\n },\n getFooterContentTable: function () {\n return this.ej2Instances.getFooterContentTable();\n },\n getForeignKeyColumns: function () {\n return this.ej2Instances.getForeignKeyColumns();\n },\n getFrozenDataRows: function () {\n return this.ej2Instances.getFrozenDataRows();\n },\n getFrozenLeftColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n },\n getFrozenLeftCount: function () {\n return this.ej2Instances.getFrozenLeftCount();\n },\n getFrozenMode: function () {\n return this.ej2Instances.getFrozenMode();\n },\n getFrozenRightCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n },\n getFrozenRightColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n },\n getFrozenRightDataRows: function () {\n return this.ej2Instances.getFrozenRightDataRows();\n },\n getFrozenRightRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n },\n getFrozenRightRows: function () {\n return this.ej2Instances.getFrozenRightRows();\n },\n getFrozenRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n },\n getHeaderContent: function () {\n return this.ej2Instances.getHeaderContent();\n },\n getHeaderTable: function () {\n return this.ej2Instances.getHeaderTable();\n },\n getHiddenColumns: function () {\n return this.ej2Instances.getHiddenColumns();\n },\n getMediaColumns: function () {\n return this.ej2Instances.getMediaColumns();\n },\n getMovableCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n },\n getMovableColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n },\n getMovableDataRows: function () {\n return this.ej2Instances.getMovableDataRows();\n },\n getMovableRowByIndex: function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n },\n getMovableRows: function () {\n return this.ej2Instances.getMovableRows();\n },\n getPager: function () {\n return this.ej2Instances.getPager();\n },\n getPrimaryKeyFieldNames: function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n },\n getRowByIndex: function (index) {\n return this.ej2Instances.getRowByIndex(index);\n },\n getRowIndexByPrimaryKey: function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n },\n getRowInfo: function (target) {\n return this.ej2Instances.getRowInfo(target);\n },\n getRows: function () {\n return this.ej2Instances.getRows();\n },\n getSelectedColumnsUid: function () {\n return this.ej2Instances.getSelectedColumnsUid();\n },\n getSelectedRecords: function () {\n return this.ej2Instances.getSelectedRecords();\n },\n getSelectedRowCellIndexes: function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n },\n getSelectedRowIndexes: function () {\n return this.ej2Instances.getSelectedRowIndexes();\n },\n getSelectedRows: function () {\n return this.ej2Instances.getSelectedRows();\n },\n getSummaryValues: function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n },\n getUidByColumnField: function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n },\n getVisibleColumns: function () {\n return this.ej2Instances.getVisibleColumns();\n },\n goToPage: function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n },\n groupCollapseAll: function () {\n return this.ej2Instances.groupCollapseAll();\n },\n groupColumn: function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n },\n groupExpandAll: function () {\n return this.ej2Instances.groupExpandAll();\n },\n hideColumns: function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n },\n hideScroll: function () {\n return this.ej2Instances.hideScroll();\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n isFrozenGrid: function () {\n return this.ej2Instances.isFrozenGrid();\n },\n openColumnChooser: function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n },\n pdfExport: function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n },\n print: function () {\n return this.ej2Instances.print();\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshColumns: function () {\n return this.ej2Instances.refreshColumns();\n },\n refreshHeader: function () {\n return this.ej2Instances.refreshHeader();\n },\n removeMaskRow: function () {\n return this.ej2Instances.removeMaskRow();\n },\n reorderColumnByIndex: function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n },\n reorderColumnByTargetIndex: function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n },\n reorderColumns: function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n },\n reorderRows: function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n },\n saveCell: function () {\n return this.ej2Instances.saveCell();\n },\n search: function (searchString) {\n return this.ej2Instances.search(searchString);\n },\n selectCell: function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n },\n selectCells: function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n },\n selectCellsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n },\n selectRow: function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n },\n selectRows: function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n },\n selectRowsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n },\n serverCsvExport: function (url) {\n return this.ej2Instances.serverCsvExport(url);\n },\n serverExcelExport: function (url) {\n return this.ej2Instances.serverExcelExport(url);\n },\n serverPdfExport: function (url) {\n return this.ej2Instances.serverPdfExport(url);\n },\n setCellValue: function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n },\n setGridContent: function (element) {\n return this.ej2Instances.setGridContent(element);\n },\n setGridContentTable: function (element) {\n return this.ej2Instances.setGridContentTable(element);\n },\n setGridHeaderContent: function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n },\n setGridHeaderTable: function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n },\n setGridPager: function (element) {\n return this.ej2Instances.setGridPager(element);\n },\n setRowData: function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n },\n showAdaptiveFilterDialog: function () {\n return this.ej2Instances.showAdaptiveFilterDialog();\n },\n showAdaptiveSortDialog: function () {\n return this.ej2Instances.showAdaptiveSortDialog();\n },\n showColumns: function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n },\n showMaskRow: function (axisDirection, dialogElement) {\n return this.ej2Instances.showMaskRow(axisDirection, dialogElement);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n sortColumn: function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n },\n startEdit: function () {\n return this.ej2Instances.startEdit();\n },\n ungroupColumn: function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n },\n updateCell: function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n },\n updateExternalMessage: function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n },\n updateRow: function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n },\n updateRowValue: function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n },\n }\n});\nexport var GridPlugin = {\n name: 'ejs-grid',\n install: function (Vue) {\n Vue.component(GridPlugin.name, GridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\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.29.4\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 if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\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\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 }\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\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\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\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\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 function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 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 return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\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 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 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 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 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 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 // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\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 var dayOfMonth;\n\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 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\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 for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\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 // 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 // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\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 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 // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\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 // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\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 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\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 // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\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);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\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 return name.match('^[^/\\\\\\\\]*$') != null;\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 eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\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 addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\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(),\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 // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\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 // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\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 // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\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 // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\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 // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\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 // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\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 // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\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\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.29.4';\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isZoomSet, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, firstToLowerCase } from '../../common/utils/helper';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { NiceInterval } from '../axis/axis-helper';\nimport { extend, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `DateTime` module is used to render datetime axis.\n */\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function DateTime(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n */\n DateTime.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n DateTime.prototype.getActualRange = function (axis, size) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n // Axis min\n if ((axis.minimum) !== null) {\n this.min = this.chart.isBlazor ? Date.parse(axis.minimum.toString()) : Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: axis.minimum }).val))));\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = Date.parse(dateParser(dateFormatter(new Date(1970, 1, 1))));\n }\n // Axis Max\n if ((axis.maximum) !== null) {\n this.max = this.chart.isBlazor ? Date.parse(axis.maximum.toString()) : Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: axis.maximum }).val))));\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = Date.parse(dateParser(dateFormatter(new Date(1970, 5, 1))));\n }\n if (this.min === this.max) {\n this.max = this.max + 2592000000;\n this.min = this.min - 2592000000;\n }\n axis.actualRange = {};\n axis.doubleRange = new DoubleRange(this.min, this.max);\n var datetimeInterval = this.calculateDateTimeNiceInterval(axis, size, axis.doubleRange.start, axis.doubleRange.end);\n if (!axis.interval) {\n axis.actualRange.interval = datetimeInterval;\n }\n else {\n axis.actualRange.interval = axis.interval;\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n };\n /**\n * Apply padding for the range.\n *\n * @private\n */\n DateTime.prototype.applyRangePadding = function (axis, size) {\n this.min = (axis.actualRange.min);\n this.max = (axis.actualRange.max);\n var minimum;\n var maximum;\n var interval = axis.actualRange.interval;\n if (!setRange(axis)) {\n var rangePadding = axis.getRangePadding(this.chart);\n minimum = new Date(this.min);\n maximum = new Date(this.max);\n var intervalType = axis.actualIntervalType;\n if (rangePadding === 'None') {\n this.min = minimum.getTime();\n this.max = maximum.getTime();\n }\n else if (rangePadding === 'Additional' || rangePadding === 'Round') {\n switch (intervalType) {\n case 'Years':\n this.getYear(minimum, maximum, rangePadding, interval);\n break;\n case 'Months':\n this.getMonth(minimum, maximum, rangePadding, interval);\n break;\n case 'Days':\n this.getDay(minimum, maximum, rangePadding, interval);\n break;\n case 'Hours':\n this.getHour(minimum, maximum, rangePadding, interval);\n break;\n case 'Minutes':\n var minute = (minimum.getMinutes() / interval) * interval;\n var endMinute = maximum.getMinutes() + (minimum.getMinutes() - minute);\n if (rangePadding === 'Round') {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), minimum.getDate(), minimum.getHours(), minute, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), maximum.getDate(), maximum.getHours(), endMinute, 59)).getTime();\n }\n else {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), minimum.getDate(), minimum.getHours(), minute + (-interval), 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), maximum.getDate(), maximum.getHours(), endMinute + (interval), 0)).getTime();\n }\n break;\n case 'Seconds':\n var second = (minimum.getSeconds() / interval) * interval;\n var endSecond = maximum.getSeconds() + (minimum.getSeconds() - second);\n if (rangePadding === 'Round') {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), minimum.getDate(), minimum.getHours(), minimum.getMinutes(), second, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), maximum.getDate(), maximum.getHours(), maximum.getMinutes(), endSecond, 0)).getTime();\n }\n else {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), minimum.getDate(), minimum.getHours(), minimum.getMinutes(), second + (-interval), 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), maximum.getDate(), maximum.getHours(), maximum.getMinutes(), endSecond + (interval), 0)).getTime();\n }\n break;\n }\n }\n }\n axis.actualRange.min = (axis.minimum != null) ? this.min : this.min;\n axis.actualRange.max = (axis.maximum != null) ? this.max : this.max;\n axis.actualRange.delta = (axis.actualRange.max - axis.actualRange.min);\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n this.calculateVisibleRange(size, axis);\n };\n DateTime.prototype.getYear = function (minimum, maximum, rangePadding, interval) {\n var startYear = minimum.getFullYear();\n var endYear = maximum.getFullYear();\n if (rangePadding === 'Additional') {\n this.min = (new Date(startYear - interval, 1, 1, 0, 0, 0)).getTime();\n this.max = (new Date(endYear + interval, 1, 1, 0, 0, 0)).getTime();\n }\n else {\n this.min = new Date(startYear, 0, 0, 0, 0, 0).getTime();\n this.max = new Date(endYear, 11, 30, 23, 59, 59).getTime();\n }\n };\n DateTime.prototype.getMonth = function (minimum, maximum, rangePadding, interval) {\n var month = minimum.getMonth();\n var endMonth = maximum.getMonth();\n if (rangePadding === 'Round') {\n this.min = (new Date(minimum.getFullYear(), month, 0, 0, 0, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), endMonth, new Date(maximum.getFullYear(), maximum.getMonth(), 0).getDate(), 23, 59, 59)).getTime();\n }\n else {\n this.min = (new Date(minimum.getFullYear(), month + (-interval), 1, 0, 0, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), endMonth + (interval), endMonth === 2 ? 28 : 30, 0, 0, 0)).getTime();\n }\n };\n DateTime.prototype.getDay = function (minimum, maximum, rangePadding, interval) {\n var day = minimum.getDate();\n var endDay = maximum.getDate();\n if (rangePadding === 'Round') {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), day, 0, 0, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), endDay, 23, 59, 59)).getTime();\n }\n else {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), day + (-interval), 0, 0, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), endDay + (interval), 0, 0, 0)).getTime();\n }\n };\n DateTime.prototype.getHour = function (minimum, maximum, rangePadding, interval) {\n var hour = (minimum.getHours() / interval) * interval;\n var endHour = maximum.getHours() + (minimum.getHours() - hour);\n if (rangePadding === 'Round') {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), minimum.getDate(), hour, 0, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), maximum.getDate(), endHour, 59, 59)).getTime();\n }\n else {\n this.min = (new Date(minimum.getFullYear(), minimum.getMonth(), minimum.getDate(), hour + (-interval), 0, 0)).getTime();\n this.max = (new Date(maximum.getFullYear(), maximum.getMonth(), maximum.getDate(), endHour + (interval), 0, 0)).getTime();\n }\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n */\n DateTime.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n min: axis.actualRange.min,\n max: axis.actualRange.max,\n interval: axis.actualRange.interval,\n delta: axis.actualRange.delta\n };\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((isZoomSet(axis)) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(size);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming) ?\n this.calculateDateTimeNiceInterval(axis, size, axis.visibleRange.min, axis.visibleRange.max)\n : axis.visibleRange.interval;\n }\n axis.dateTimeInterval = this.increaseDateTimeInterval(axis, axis.visibleRange.min, axis.visibleRange.interval).getTime()\n - axis.visibleRange.min;\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate visible labels for the axis.\n *\n * @param {Axis} axis axis\n * @param {Chart | RangeNavigator} chart chart\n * @returns {void}\n * @private\n */\n DateTime.prototype.calculateVisibleLabels = function (axis, chart) {\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var previousValue;\n var isBlazor = chart.getModuleName() === 'chart' ? chart.isBlazor : false;\n var axisLabels = axis.visibleLabels;\n if (!setRange(axis)) {\n tempInterval = this.alignRangeStart(axis, tempInterval, axis.visibleRange.interval).getTime();\n }\n while (tempInterval <= axis.visibleRange.max) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n previousValue = axisLabels.length ? axis.visibleLabels[axisLabels.length - 1].value : tempInterval;\n axis.format = chart.intl.getDateFormat({\n format: this.findCustomFormats(axis, tempInterval, previousValue) || this.blazorCustomFormat(axis),\n type: firstToLowerCase(axis.skeletonType),\n skeleton: this.getSkeleton(axis, tempInterval, previousValue, isBlazor)\n });\n axis.startLabel = axis.format(new Date(axis.visibleRange.min));\n axis.endLabel = axis.format(new Date(axis.visibleRange.max));\n if (withIn(tempInterval, axis.visibleRange)) {\n var interval = this.increaseDateTimeInterval(axis, tempInterval, axis.visibleRange.interval).getTime();\n if (interval > axis.visibleRange.max) {\n axis.endLabel = axis.format(new Date(tempInterval));\n }\n triggerLabelRender(chart, tempInterval, axis.format(new Date(tempInterval)), labelStyle, axis);\n }\n var actualInterval = tempInterval;\n tempInterval = this.increaseDateTimeInterval(axis, tempInterval, axis.visibleRange.interval).getTime();\n if (actualInterval === tempInterval) {\n break;\n }\n }\n //tooltip and crosshair formats for 'Months' and 'Days' interval types\n if ((axis.actualIntervalType === 'Months' || axis.actualIntervalType === 'Days') && axis.isChart) {\n axis.format = chart.intl.getDateFormat({\n format: axis.labelFormat || (axis.actualIntervalType === 'Months' && !axis.skeleton ? 'y MMM' : ''),\n type: firstToLowerCase(axis.skeletonType), skeleton: axis.skeleton || (axis.actualIntervalType === 'Days' ? 'MMMd' : '')\n });\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /** @private */\n DateTime.prototype.blazorCustomFormat = function (axis) {\n if (this.chart.isBlazor) {\n return axis.actualIntervalType === 'Years' ? (axis.isIntervalInDecimal ? 'yyyy' : 'MMM y') :\n (axis.actualIntervalType === 'Days' && !axis.isIntervalInDecimal) ? 'ddd HH tt' : '';\n }\n else {\n return '';\n }\n };\n /** @private */\n DateTime.prototype.increaseDateTimeInterval = function (axis, value, interval) {\n var result = new Date(value);\n if (axis.interval) {\n axis.isIntervalInDecimal = (interval % 1) === 0;\n axis.visibleRange.interval = interval;\n }\n else {\n interval = Math.ceil(interval);\n axis.visibleRange.interval = interval;\n }\n var intervalType = axis.actualIntervalType;\n if (axis.isIntervalInDecimal) {\n switch (intervalType) {\n case 'Years':\n result.setFullYear(result.getFullYear() + interval);\n return result;\n case 'Quarter':\n result.setMonth(result.getMonth() + (3 * interval));\n return result;\n case 'Months':\n result.setMonth(result.getMonth() + interval);\n return result;\n case 'Weeks':\n result.setDate(result.getDate() + (interval * 7));\n return result;\n case 'Days':\n result.setDate(result.getDate() + interval);\n return result;\n case 'Hours':\n result.setHours(result.getHours() + interval);\n return result;\n case 'Minutes':\n result.setMinutes(result.getMinutes() + interval);\n return result;\n case 'Seconds':\n result.setSeconds(result.getSeconds() + interval);\n return result;\n }\n }\n else {\n result = this.getDecimalInterval(result, interval, intervalType);\n }\n return result;\n };\n DateTime.prototype.alignRangeStart = function (axis, sDate, intervalSize) {\n var sResult = new Date(sDate);\n switch (axis.actualIntervalType) {\n case 'Years':\n var year = Math.floor(Math.floor(sResult.getFullYear() / intervalSize) * intervalSize);\n sResult = new Date(year, sResult.getMonth(), sResult.getDate(), 0, 0, 0);\n return sResult;\n case 'Months':\n var month = Math.floor(Math.floor((sResult.getMonth()) / intervalSize) * intervalSize);\n sResult = new Date(sResult.getFullYear(), month, sResult.getDate(), 0, 0, 0);\n return sResult;\n case 'Days':\n var day = Math.floor(Math.floor((sResult.getDate()) / intervalSize) * intervalSize);\n sResult = new Date(sResult.getFullYear(), sResult.getMonth(), day, 0, 0, 0);\n return sResult;\n case 'Hours':\n var hour = Math.floor(Math.floor((sResult.getHours()) / intervalSize) * intervalSize);\n sResult = new Date(sResult.getFullYear(), sResult.getMonth(), sResult.getDate(), hour, 0, 0);\n return sResult;\n case 'Minutes':\n var minutes = Math.floor(Math.floor((sResult.getMinutes()) / intervalSize) * intervalSize);\n sResult = new Date(sResult.getFullYear(), sResult.getMonth(), sResult.getDate(), sResult.getHours(), minutes, 0, 0);\n return sResult;\n case 'Seconds':\n var seconds = Math.floor(Math.floor((sResult.getSeconds()) / intervalSize) * intervalSize);\n sResult = new Date(sResult.getFullYear(), sResult.getMonth(), sResult.getDate(), sResult.getHours(), sResult.getMinutes(), seconds, 0);\n return sResult;\n }\n return sResult;\n };\n DateTime.prototype.getDecimalInterval = function (result, interval, intervalType) {\n var roundValue = Math.floor(interval);\n var decimalValue = interval - roundValue;\n switch (intervalType) {\n case 'Years':\n var month = Math.round(12 * decimalValue);\n result.setFullYear(result.getFullYear() + roundValue);\n result.setMonth(result.getMonth() + month);\n return result;\n case 'Quarter':\n result.setMonth(result.getMonth() + (3 * interval));\n return result;\n case 'Months':\n var days = Math.round(30 * decimalValue);\n result.setMonth(result.getMonth() + roundValue);\n result.setDate(result.getDate() + days);\n return result;\n case 'Weeks':\n result.setDate(result.getDate() + (interval * 7));\n return result;\n case 'Days':\n var hour = Math.round(24 * decimalValue);\n result.setDate(result.getDate() + roundValue);\n result.setHours(result.getHours() + hour);\n return result;\n case 'Hours':\n var min = Math.round(60 * decimalValue);\n result.setHours(result.getHours() + roundValue);\n result.setMinutes(result.getMinutes() + min);\n return result;\n case 'Minutes':\n var sec = Math.round(60 * decimalValue);\n result.setMinutes(result.getMinutes() + roundValue);\n result.setSeconds(result.getSeconds() + sec);\n return result;\n case 'Seconds':\n var milliSec = Math.round(1000 * decimalValue);\n result.setSeconds(result.getSeconds() + roundValue);\n result.setMilliseconds(result.getMilliseconds() + milliSec);\n return result;\n }\n return result;\n };\n /**\n * Get module name\n */\n DateTime.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'DateTime';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n DateTime.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return DateTime;\n}(NiceInterval));\nexport { DateTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (_this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-row');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('ClearButton'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\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","import { print as printWindow, createElement } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\nvar PrintUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function PrintUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements.\n *\n * @param elements\n */\n PrintUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n *\n * @param elements\n * @private\n */\n PrintUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n for (var index = 0; index < div.children.length; index++) {\n var backgroundColor = (this.control.theme.indexOf('Dark') > -1 || this.control.theme === 'HighContrast') ? 'rgba(0, 0, 0, 1)' : 'rgba(255, 255, 255, 1)';\n var svg = div.children[index];\n for (var childIndex = 0; childIndex < svg.children.length; childIndex++) {\n var actualBackgroundColor = void 0;\n var isSVG = false;\n if (svg.id.indexOf('_stockChart_svg') > -1) {\n actualBackgroundColor = svg.children[0].getAttribute('fill');\n isSVG = true;\n }\n else if (svg.children[childIndex].id.indexOf('_svg') > -1) {\n actualBackgroundColor = svg.children[childIndex].children[0].getAttribute('fill');\n isSVG = true;\n }\n if (isSVG) {\n actualBackgroundColor = actualBackgroundColor === 'transparent' ? backgroundColor : actualBackgroundColor;\n svg.children[childIndex].children[0].setAttribute('fill', actualBackgroundColor);\n }\n }\n div[index] = svg;\n }\n return div;\n };\n return PrintUtils;\n}());\nexport { PrintUtils };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection, Browser } from '@syncfusion/ej2-base';\n/**\n * Defines the appearance of the connectors\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the borders in the chart title.\n */\nvar titleBorder = /** @class */ (function (_super) {\n __extends(titleBorder, _super);\n function titleBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], titleBorder.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], titleBorder.prototype, \"width\", void 0);\n __decorate([\n Property(0.8)\n ], titleBorder.prototype, \"cornerRadius\", void 0);\n return titleBorder;\n}(ChildProperty));\nexport { titleBorder };\n/**\n * Configures the title settings in chart and 3D chart.\n */\nvar titleSettings = /** @class */ (function (_super) {\n __extends(titleSettings, _super);\n function titleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], titleSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('15px')\n ], titleSettings.prototype, \"size\", void 0);\n __decorate([\n Property('500')\n ], titleSettings.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], titleSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], titleSettings.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], titleSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], titleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], titleSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('Top')\n ], titleSettings.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"y\", void 0);\n __decorate([\n Property('transparent')\n ], titleSettings.prototype, \"background\", void 0);\n __decorate([\n Complex({}, titleBorder)\n ], titleSettings.prototype, \"border\", void 0);\n return titleSettings;\n}(ChildProperty));\nexport { titleSettings };\n/**\n * Configures the location for the legend.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Configures the fonts in charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Configures the borders in the chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Configures the marker position in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Configures the chart area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"width\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the chart margins.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the chart Legend Container Padding.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the animation behavior for chart series.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Series and point index\n *\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Column series rounded corner options\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Configures the Empty Points of series\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Configures the drag settings of series\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Options to customize the center label of the pie and doughnut chart.\n *\n * @default {}\n */\nvar CenterLabel = /** @class */ (function (_super) {\n __extends(CenterLabel, _super);\n function CenterLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"text\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"16px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], CenterLabel.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"hoverTextFormat\", void 0);\n return CenterLabel;\n}(ChildProperty));\nexport { CenterLabel };\n/**\n * Configures the ToolTips in the chart.\n *\n * @public\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: null, color: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], TooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: null, y: null }, Location)\n ], TooltipSettings.prototype, \"location\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\nvar StockTooltipSettings = /** @class */ (function (_super) {\n __extends(StockTooltipSettings, _super);\n function StockTooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], StockTooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: null, color: null }, Font)\n ], StockTooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], StockTooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], StockTooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], StockTooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], StockTooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Fixed')\n ], StockTooltipSettings.prototype, \"position\", void 0);\n return StockTooltipSettings;\n}(ChildProperty));\nexport { StockTooltipSettings };\n/**\n * button settings in period selector\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Period Selector Settings\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\n","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * Numeric module is used to render numeric axis.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function Double(chart) {\n this.isColumn = 0;\n this.isStacking = false;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n *\n * @private\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n if (this.isAutoIntervalOnBothAxis(axis)) {\n return niceInterval;\n }\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Double.prototype.isAutoIntervalOnBothAxis = function (axis) {\n if (((axis.zoomFactor < 1 || axis.zoomPosition > 0) && axis.enableAutoIntervalOnZooming)) {\n return false;\n }\n else {\n return true;\n }\n };\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - (this.isStacking ? 0 : axis.actualRange.interval);\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n *\n * @private\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n *\n * @private\n */\n Double.prototype.calculateRange = function (axis) {\n /*! Generate axis range */\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible) {\n continue;\n }\n this.paddingInterval = 0;\n if (!isNullOrUndefined(series.points)) {\n axis.maxPointLength = series.points.length;\n }\n axis.maxPointLength = series.points.length;\n if (((series.type.indexOf('Column') > -1 || series.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series.xAxis.valueType === 'Double' || series.xAxis.valueType === 'DateTime')\n && series.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series);\n }\n else {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1 || series.drawType === 'Column') ? 1 : 0;\n this.isStacking = series.type.indexOf('Stacking') !== -1;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n this.findMinMax(series.yMin, series.yMax);\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n *\n * @private\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval, size);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval, size) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n var delta = maximum - minimum;\n interval = this.calculateNumericNiceInterval(axis, delta, size);\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0 || (minimum < 0 && maximum < 0)) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(size);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming) ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n if (axis.maximum && axis.orientation === 'Vertical' && axis.rangePadding === 'Auto') {\n var duplicateTempInterval = void 0;\n var tempInterval = axis.visibleRange.min;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n }\n if (duplicateTempInterval < axis.visibleRange.max) {\n axis.visibleRange.max = duplicateTempInterval + axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n *\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n *\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n /*The toLocaleString method is used to adjust the decimal points for this ticket, specifically for ticket numbers I481747 and I541484.*/\n var labelValue = !(tempInterval % 1) ? tempInterval : Number(tempInterval.toLocaleString('en-US').split(',').join(''));\n return isCustom ? format.replace('{value}', axis.format(labelValue))\n : format ? axis.format(tempInterval) : axis.format(labelValue);\n };\n return Double;\n}());\nexport { Double };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\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","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableColumnVirtualization && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords() : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\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","import { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies Chart Themes\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: '400',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n})(Theme || (Theme = {}));\n/** @private */\nexport function getSeriesColor(theme) {\n var palette;\n switch (theme) {\n case 'Fabric':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'Bootstrap4':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Bootstrap':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'HighContrastLight':\n case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#9ECB08', '#56AEFF', '#C57AFF', '#61EAA9', '#EBBB3E',\n '#F45C5C', '#8A77FF', '#63C7FF', '#FF84B0', '#F7C928'];\n break;\n case 'FabricDark':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'BootstrapDark':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Tailwind':\n palette = ['#5A61F6', '#65A30D', '#334155', '#14B8A6', '#8B5CF6',\n '#0369A1', '#F97316', '#9333EA', '#F59E0B', '#15803D'];\n break;\n case 'TailwindDark':\n palette = ['#8B5CF6', '#22D3EE', '#F87171', '#4ADE80', '#E879F9',\n '#FCD34D', '#F97316', '#2DD4BF', '#F472B6', '#10B981'];\n break;\n case 'Bootstrap5':\n palette = ['#6355C7', '#FFB400', '#2196F5', '#F7523F', '#963C70',\n '#4BE0BC', '#FD7400', '#C9E422', '#DE3D8A', '#162F88'];\n break;\n case 'Bootstrap5Dark':\n palette = ['#8F80F4', '#FFD46D', '#6CBDFF', '#FF7F71', '#FF6DB3',\n '#63F5D2', '#FCAA65', '#ECFF77', '#EF8EFF', '#5F82FD'];\n break;\n case 'FluentDark':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Fluent':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Material3':\n palette = ['#6355C7', '#00AEE0', '#FFB400', '#F7523F', '#963C70',\n '#FD7400', '#4BE0BC', '#2196F5', '#DE3D8A', '#162F88'];\n break;\n case 'Material3Dark':\n palette = ['#4EAAFF', '#FA4EAB', '#FFF500', '#17EA58', '#38FFE7',\n '#FF9E45', '#B3F32F', '#B93CE4', '#FC5664', '#9B55FF'];\n break;\n default:\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n }\n return palette;\n}\n/** @private */\n// tslint:disable-next-line:max-func-body-length\nexport function getThemeColor(theme, canvas) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#383838' : (theme === 'FabricDark' ? '#242424' : '#1b1b1b');\n switch (theme) {\n case 'HighContrastLight':\n case 'HighContrast':\n style = {\n axisLabel: '#ffffff',\n axisTitle: '#ffffff',\n axisLine: '#ffffff',\n majorGridLine: '#BFBFBF',\n minorGridLine: '#969696',\n majorTickLine: '#BFBFBF',\n minorTickLine: '#969696',\n chartTitle: '#ffffff',\n legendLabel: '#ffffff',\n background: canvas ? '#000000' : 'transparent',\n areaBorder: '#ffffff',\n errorBar: '#ffffff',\n crosshairLine: '#ffffff',\n crosshairFill: '#ffffff',\n crosshairLabel: '#000000',\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n markerShadow: '#BFBFBF',\n selectionRectFill: 'rgba(255, 217, 57, 0.3)',\n selectionRectStroke: '#ffffff',\n selectionCircleStroke: '#FFD939',\n tabColor: '#FFD939',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#FFD939',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n axisLabel: '#DADADA', axisTitle: '#ffffff',\n axisLine: ' #6F6C6C',\n majorGridLine: '#414040',\n minorGridLine: '#514F4F',\n majorTickLine: '#414040',\n minorTickLine: ' #4A4848',\n chartTitle: '#ffffff',\n legendLabel: '#DADADA',\n background: canvas ? darkBackground : 'transparent',\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n crosshairLabel: '#282727',\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A',\n markerShadow: null,\n selectionRectFill: 'rgba(56,169,255, 0.1)',\n selectionRectStroke: '#38A9FF',\n selectionCircleStroke: '#282727',\n tabColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n axisLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#CED4DA', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n legendTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n legendLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n tooltipLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n axisTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n datalabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n chartSubTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n crosshairLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n stripLineLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.24)' : theme === 'FabricDark' ? '#6F6C6C' : '#414141', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n }\n };\n break;\n case 'Bootstrap4':\n style = {\n axisLabel: '#212529', axisTitle: '#212529', axisLine: '#CED4DA', majorGridLine: '#CED4DA',\n minorGridLine: '#DEE2E6', majorTickLine: '#ADB5BD', minorTickLine: '#CED4DA', chartTitle: '#212529', legendLabel: '#212529',\n background: canvas ? '#FFFFFF' : 'transparent', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#212529',\n crosshairLabel: '#FFFFFF', tooltipFill: '#020202', tooltipBoldLabel: 'rgba(255,255,255)',\n tooltipLightLabel: 'rgba(255,255,255, 0.9)', tooltipHeaderLine: 'rgba(255,255,255, 0.2)', markerShadow: null,\n selectionRectFill: 'rgba(255,255,255, 0.1)', selectionRectStroke: 'rgba(0, 123, 255)', selectionCircleStroke: '#495057', tabColor: '#007BFF', bearFillColor: '#2ecd71', bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#007BFF',\n toolkitFill: '#495057',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(-5, -5, 26, 26),\n chartTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#666666', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Tailwind':\n style = {\n axisLabel: '#6B728', axisTitle: '#374151',\n axisLine: ' #D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#374151',\n legendLabel: '#374151',\n background: canvas ? 'rgba(255,255,255, 0.0)' : 'transparent',\n areaBorder: ' #E5E7EB',\n errorBar: '#374151',\n crosshairLine: '#1F2937',\n crosshairFill: '#111827',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#111827',\n tooltipBoldLabel: '#D1D5DB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#4F46E5',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#4F46E5',\n toolkitFill: '#6B7280',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n axisLabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n },\n legendTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n legendLabelFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter'\n },\n axisTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n datalabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n },\n chartSubTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter'\n },\n stripLineLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n }\n };\n break;\n case 'TailwindDark':\n style = {\n axisLabel: '#9CA3AF', axisTitle: '#9CA3AF',\n axisLine: ' #4B5563',\n majorGridLine: '#374151',\n minorGridLine: '#374151',\n majorTickLine: '#4B5563',\n minorTickLine: ' #4B5563',\n chartTitle: '#D1D5DB',\n legendLabel: '#D1D5DB',\n background: canvas ? '#1f2937' : 'transparent',\n areaBorder: ' #374151',\n errorBar: '#ffffff',\n crosshairLine: '#9CA3AF',\n crosshairFill: '#F9FAFB',\n crosshairLabel: '#1F2937',\n tooltipFill: '#F9FAFB',\n tooltipBoldLabel: '#6B7280',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(34,211,238, 0.1)',\n selectionRectStroke: '#22D3EE',\n selectionCircleStroke: '#282727',\n tabColor: '#22D3EE',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#22D3EE',\n toolkitFill: '#D1D5DB',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n axisLabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter'\n },\n legendTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n legendLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n tooltipLabelFont: {\n color: '#1F2937', fontFamily: 'Inter'\n },\n axisTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n datalabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter'\n },\n chartSubTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n crosshairLabelFont: {\n color: '#1F2937', fontFamily: 'Inter'\n },\n stripLineLabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n }\n };\n break;\n case 'Bootstrap5':\n style = {\n axisLabel: '#495057',\n axisTitle: '#343A40',\n axisLine: '#D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#343A40',\n legendLabel: '#343A40',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: ' #DEE2E6',\n errorBar: '#1F2937',\n crosshairLine: '#1F2937',\n crosshairFill: '#212529',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0D6EFD',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0D6EFD',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#ADB5BD', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n axisLabel: '#CED4DA',\n axisTitle: '#E9ECEF',\n axisLine: '#495057',\n majorGridLine: '#343A40',\n minorGridLine: '#343A40',\n majorTickLine: '#495057',\n minorTickLine: ' #495057',\n chartTitle: '#E9ECEF',\n legendLabel: '#E9ECEF',\n background: canvas ? '#212529' : 'transparent',\n areaBorder: ' #444C54',\n errorBar: '#ADB5BD',\n crosshairLine: '#ADB5BD',\n crosshairFill: '#E9ECEF',\n crosshairLabel: '#212529',\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0D6EFD',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0D6EFD',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#CED4DA', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Fluent':\n style = {\n axisLabel: '#3B3A39',\n axisTitle: '#201F1E',\n axisLine: '#D2D0CE',\n majorGridLine: '#EDEBE9',\n minorGridLine: '#EDEBE9',\n majorTickLine: '#D2D0CE',\n minorTickLine: ' #D2D0CE',\n chartTitle: '#201F1E',\n legendLabel: '#323130',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#EDEBE9',\n errorBar: '#A19F9D',\n crosshairLine: '#A19F9D',\n crosshairFill: '#FFFFFF',\n crosshairLabel: '#323130',\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078D4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#A19F9D',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#323129', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#A19F9D', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'FluentDark':\n style = {\n axisLabel: '#C8C6C4',\n axisTitle: '#F3F2F1',\n axisLine: '#3B3A39',\n majorGridLine: '#414040',\n minorGridLine: '#414040',\n majorTickLine: '#3B3A39',\n minorTickLine: '#3B3A39',\n chartTitle: '#F3F2F1',\n legendLabel: '#D2D0CE',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#414040',\n errorBar: '#D2D0CE',\n crosshairLine: '#D2D0CE',\n crosshairFill: '#323130',\n crosshairLabel: '#F3F2F1',\n tooltipFill: '#252423',\n tooltipBoldLabel: '#F3F2F1',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078D4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#484644',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#F3F2F2', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#484644', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'Material3':\n style = {\n axisLabel: '#1E192B',\n axisTitle: '#1C1B1F',\n axisLine: '#C4C7C5',\n majorGridLine: '#C4C7C5',\n minorGridLine: '#C4C7C5',\n majorTickLine: '#C4C7C5',\n minorTickLine: ' #C4C7C5',\n chartTitle: '#1C1B1F',\n legendLabel: '#49454E',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#E7E0EC',\n errorBar: '#79747E',\n crosshairLine: '#49454E',\n crosshairFill: '#313033',\n crosshairLabel: '#F4EFF4',\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n markerShadow: null,\n selectionRectFill: 'rgb(98, 0, 238, 0.06)',\n selectionRectStroke: '#6200EE',\n selectionCircleStroke: '#79747E',\n tabColor: '#49454E',\n bearFillColor: '#5887FF',\n bullFillColor: '#F7523F',\n toolkitSelectionColor: '#49454E',\n toolkitFill: '#49454E',\n toolkitIconRectOverFill: '#EADDFF',\n toolkitIconRectSelectionFill: '#EADDFF',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#D21020',\n chartTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n axisLabelFont: {\n color: '#1E192B', fontFamily: 'Roboto'\n },\n legendTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n tooltipLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto'\n },\n axisTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n datalabelFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n chartSubTitleFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n crosshairLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto'\n },\n stripLineLabelFont: {\n color: '#79747E', fontFamily: 'Roboto'\n }\n };\n break;\n case 'Material3Dark':\n style = {\n axisLabel: '#E6E1E5',\n axisTitle: '#E6E1E5',\n axisLine: '#49454F',\n majorGridLine: '#444746',\n minorGridLine: '#444746',\n majorTickLine: '#444746',\n minorTickLine: ' #444746',\n chartTitle: '#E6E1E5',\n legendLabel: '#CAC4D0',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#49454F',\n errorBar: '#938F99',\n crosshairLine: '#CAC4D0',\n crosshairFill: '#E6E1E5',\n crosshairLabel: '#313033',\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n markerShadow: null,\n selectionRectFill: 'rgba(78, 170, 255, 0.06)',\n selectionRectStroke: '#4EAAFF',\n selectionCircleStroke: '#938F99',\n tabColor: '#CAC4D0',\n bearFillColor: '#B3F32F',\n bullFillColor: '#FF9E45',\n toolkitSelectionColor: '#CAC4D0',\n toolkitFill: '#CAC4D0',\n toolkitIconRectOverFill: '#4F378B',\n toolkitIconRectSelectionFill: '#4F378B',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#FF9E45',\n chartTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n axisLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n legendTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n legendLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n tooltipLabelFont: {\n color: '#313033', fontFamily: 'Roboto'\n },\n axisTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n datalabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n chartSubTitleFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n crosshairLabelFont: {\n color: '#313033', fontFamily: 'Roboto'\n },\n stripLineLabelFont: {\n color: '#938F99', fontFamily: 'Roboto'\n }\n };\n break;\n default:\n style = {\n axisLabel: '#686868',\n axisTitle: '#424242',\n axisLine: '#b5b5b5',\n majorGridLine: '#dbdbdb',\n minorGridLine: '#eaeaea',\n majorTickLine: '#b5b5b5',\n minorTickLine: '#d6d6d6',\n chartTitle: '#424242',\n legendLabel: '#353535',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n crosshairLabel: '#e5e5e5',\n tooltipFill: '#000816',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff',\n markerShadow: null,\n selectionRectFill: 'rgba(41, 171, 226, 0.1)',\n selectionRectStroke: '#29abe2',\n selectionCircleStroke: '#29abe2',\n tabColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n axisLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n legendTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n legendLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#666666', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n tooltipLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n axisTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n datalabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n chartSubTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n crosshairLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n stripLineLabelFont: {\n color: theme === 'Material' ? 'rgba(158, 158, 158, 1)' : theme === 'Fabric' ? '#A6A6A6' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n }\n };\n break;\n }\n return style;\n}\n/** @private */\nexport function getScrollbarThemeColor(theme) {\n var scrollStyle;\n switch (theme) {\n case 'HighContrastLight':\n scrollStyle = {\n backRect: '#333',\n thumb: '#bfbfbf',\n circle: '#fff',\n circleHover: '#685708',\n arrow: '#333',\n grip: '#333',\n arrowHover: '#fff',\n backRectBorder: '#969696'\n };\n break;\n case 'Bootstrap':\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e6e6e6',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#8c8c8c',\n grip: '#8c8c8c'\n };\n break;\n case 'Fabric':\n scrollStyle = {\n backRect: '#f8f8f8',\n thumb: '#eaeaea',\n circle: '#fff',\n circleHover: '#eaeaea',\n arrow: '#a6a6a6',\n grip: '#a6a6a6'\n };\n break;\n case 'MaterialDark':\n scrollStyle = {\n backRect: '#424242',\n thumb: '#616161',\n circle: '#757575',\n circleHover: '#616161',\n arrow: '#BDBDBD',\n grip: '#BDBDBD'\n };\n break;\n case 'FabricDark':\n scrollStyle = {\n backRect: '#282727',\n thumb: '#333232',\n circle: '#4A4848',\n circleHover: '#514F4F',\n arrow: '#ADB5BD',\n grip: '#DADADA'\n };\n break;\n case 'BootstrapDark':\n scrollStyle = {\n backRect: '#2A2A2A',\n thumb: '#313131',\n circle: '#414141',\n circleHover: '#484848',\n arrow: '#DADADA',\n grip: '#FFFFFF'\n };\n break;\n case 'Bootstrap5Dark':\n scrollStyle = {\n backRect: '#282D31',\n thumb: '#3B4248',\n circle: '#495057',\n circleHover: '#6C757D',\n arrow: '#A19F9D',\n grip: '#ADB5BD'\n };\n break;\n case 'HighContrast':\n scrollStyle = {\n backRect: '#757575',\n thumb: '#BFBFBF',\n circle: '#FFFFFF',\n circleHover: '#FFFFFF',\n arrow: '#ADB5BD',\n grip: '#969696'\n };\n break;\n case 'TailwindDark':\n scrollStyle = {\n backRect: '#6B7280',\n thumb: '#374151',\n circle: '#4B5563',\n circleHover: '#4B5563',\n arrow: '#ADB5BD',\n grip: '#D1D5DB'\n };\n break;\n case 'Fluent':\n scrollStyle = {\n backRect: '#F3F2F1',\n thumb: '#E1DFDD',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#605E5C',\n grip: '#605E5C'\n };\n break;\n case 'FluentDark':\n scrollStyle = {\n backRect: '#252423',\n thumb: '#323130',\n circle: '#3B3A39',\n circleHover: '#3B3A39',\n arrow: '#ADB5BD',\n grip: '#A19F9D'\n };\n break;\n case 'Material3':\n scrollStyle = {\n backRect: 'rgba(103, 80, 164, 0.05)',\n thumb: ' rgba(103, 80, 164, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#49454E',\n grip: '#49454E'\n };\n break;\n case 'Material3Dark':\n scrollStyle = {\n backRect: 'rgba(208, 188, 255, 0.05)',\n thumb: 'rgba(208, 188, 255, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#CAC4D0',\n grip: '#CAC4D0'\n };\n break;\n default:\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e0e0e0',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#9e9e9e',\n grip: '#9e9e9e'\n };\n break;\n }\n return scrollStyle;\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","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n *\n * @param {Object} data chart data\n * @param {string} fields date fields\n * @param {boolean} isDescending boolean values of descending\n * @returns {Object[]} It returns chart data which be sorted.\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n for (var i = 0; i < sortData.length; i++) {\n for (var j = 0; j < fields.length; j++) {\n if (sortData[i][fields[j]] instanceof Date) {\n sortData[i][fields[j]] = sortData[i][fields[j]].getTime();\n }\n }\n }\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/** @private */\nexport function isBreakLabel(label) {\n return label.indexOf('
') !== -1;\n}\n/** @private */\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x)) {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/** @private */\nexport function rotateTextSize(font, text, angle, chart) {\n var transformValue = chart.element.style.transform;\n if (transformValue) {\n chart.element.style.transform = '';\n }\n var renderer = new SvgRenderer(chart.element.id);\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n var options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('
');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n var htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw && !chart.stockChart) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font, chart.themeStyle.axisLabelFont).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n chart.svgObject.appendChild(htmlObject);\n var box = htmlObject.getBoundingClientRect();\n if (transformValue) {\n chart.element.style.transform = transformValue;\n }\n remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw && !chart.stockChart) {\n remove(chart.svgObject);\n }\n if (chart.enableCanvas) {\n var textWidth = measureText(text, font, chart.themeStyle.axisLabelFont).width;\n var textHeight = measureText(text, font, chart.themeStyle.axisLabelFont).height;\n var angleInRadians = (angle * Math.PI) / 180; // Convert the rotation angle to radians\n var rotatedTextWidth = Math.abs(Math.cos(angleInRadians) * textWidth) + Math.abs(Math.sin(angleInRadians) * textHeight);\n var rotatedTextHeight = Math.abs(Math.sin(angleInRadians) * textWidth) + Math.abs(Math.cos(angleInRadians) * textHeight);\n return new Size(rotatedTextWidth, rotatedTextHeight);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/** @private */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/** @private */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n tooltip.innerText = text;\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerText = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/** @private */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/** @private */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/** @private */\nexport function logWithIn(value, axis) {\n return axis.valueType === 'Logarithmic' ? logBase(value, axis.logBase) : value;\n}\n/** @private */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/** @private */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/** @private */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/** @private */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/** @private */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/** @private */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/** @private */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/** @private */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem\n *\n * @param {ChartLocation[]} a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @param {ChartLocation[]} b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @returns {boolean} if there is any intersection between the 2 polygons, false otherwise\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\n/** @private */\nfunction getAccumulationLegend(locX, locY, r, height, width, mode) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/** @private */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/** @private */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/** @private */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n var isInverse = axis.isChart ? axis.isAxisInverse : axis.isInversed;\n return isInverse ? (1 - result) : result;\n}\n/** @private */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * method to find series, point index by element id\n *\n * @private\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/** @private */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/** @private */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isAxisInverse ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/** @private */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/** @private */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.isAxisOpposedPosition;\n var anchor = chart.enableRtl ? 'end' : isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var pathElement;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n var isRtlEnabled = (chart.enableRtl && !isVertical && !axis.isInversed) || (axis.isInversed && !(chart.enableRtl && !isVertical));\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? (isRtlEnabled ? axis.startLabel : axis.endLabel) : (isRtlEnabled ? axis.endLabel : axis.startLabel), axis.labelStyle, chart.themeStyle.axisLabelFont);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n pathElement = chart.renderer.drawPath({\n 'id': chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i,\n 'fill': chart.themeStyle.crosshairFill, 'width': 2, 'color': chart.themeStyle.crosshairFill,\n 'opacity': 1, 'stroke-dasharray': null, 'd': direction\n }, null);\n parent.appendChild(pathElement);\n if (chart.theme === 'Fluent' || chart.theme === 'FluentDark') {\n var shadowId = chart.element.id + '_shadow';\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = chart.renderer.createDefs();\n defElement.setAttribute('id', chart.element.id + 'SVG_tooltip_definition');\n parent.appendChild(defElement);\n defElement.innerHTML = shadow;\n pathElement.setAttribute('stroke', '#cccccc');\n pathElement.setAttribute('stroke-width', '0.5');\n }\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? (isRtlEnabled ? axis.startLabel : axis.endLabel) : (isRtlEnabled ? axis.endLabel : axis.startLabel)), { color: chart.themeStyle.crosshairLabelFont.color, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabelFont.color, parent, null, null, null, null, null, null, null, null, null, null, chart.themeStyle.crosshairLabelFont);\n }\n return parent;\n}\n/** @private */\nexport function findCrosshairDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY) {\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY);\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n//Within bounds\n/** @private */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/** @private */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series, isCanvas) {\n if (isCanvas === void 0) { isCanvas = false; }\n var rect = series.clipRect;\n if (isCanvas && (series.type === 'Polar' || series.type === 'Radar')) {\n if (series.drawType === 'Scatter') {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x / 2;\n rect.y = series.yAxis.rect.y / 2;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n else {\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n}\n/** @private */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/** @private */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/** @private */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n var stackingGroups = [];\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n if (series.type.indexOf('Stacking') > -1 && stackingGroups.indexOf(series.stackingGroup) === -1) {\n stackingGroups.push(series.stackingGroup);\n }\n xValues = series.points.map(function (point) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - 25920000) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = series.type.indexOf('Stacking') > -1 && axis.valueType == \"Category\" ? stackingGroups.length : value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/** @private */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Animation Effect Calculation Started Here\n *\n * @param {number} currentTime currentTime\n * @param {number} startValue startValue of the animation\n * @param {number} endValue endValue of the animation\n * @param {number} duration duration of the animation\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animation Effect Calculation End\n *\n * @private\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n element.style.visibility = 'hidden';\n var transform = element.getAttribute('transform');\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate(' + centerX\n + ' ' + centerY + ') scale(' + height + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n element.style.visibility = '';\n element.setAttribute('transform', transform ? transform : '');\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animate the rect element.\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n //name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n }\n });\n}\n/**\n * Animation after legend click a path.\n *\n * @param {Element} element element to be animated\n * @param {string} direction current direction of the path\n * @param {boolean} redraw chart redraw\n * @param {string} previousDirection previous direction of the path\n * @param {number} animateDuration animateDuration of the path\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (animateDuration) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else if (startPath[0] === '') {\n currentDireciton = '';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * To append the clip rect element.\n *\n * @param {boolean} redraw chart redraw value\n * @param {BaseAttibutes} options element options\n * @param {SvgRenderer} renderer svg renderer values\n * @param {string} clipPath clipPath of the element\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('
') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.themeStyle.axisLabelFont) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.enableRtl, chart.themeStyle.axisLabelFont)) : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n *\n * @returns {boolean} It returns true if the axis range is set otherwise false.\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * To check whether the axis is zoomed or not.\n *\n * @param {Axis} axis axis model\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculate desired interval for the axis.\n *\n * @returns {void} It returns desired interval count.\n * @private\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animation for template\n *\n * @private\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n }\n });\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n var eq = 72;\n var xVal;\n var yVal;\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Plus':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'RangeStepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n var y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/** @private */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = templateComplier(template);\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/** @private */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/** @private */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n if (point.index === 0) {\n chart.dataLabelCollections = []; // clear old datalabel bounds for react callback\n }\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/** @private */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn = getTemplateFunction(content);\n var templateElement;\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) :\n { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = (point && series) ? chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw) : reactCallback;\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/** @private */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/** @private */\nexport function measureElementRect(element, redraw, isReactCallback) {\n if (redraw === void 0) { redraw = false; }\n if (!isReactCallback) { // If the element is already in DOM, no need to append in the body.\n document.body.appendChild(element);\n }\n var bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else if (!isReactCallback) { // for react chart data label template - (callback function)\n removeElement(element.id);\n }\n return bounds;\n}\n/** @private */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/** @private */\nexport function getPoint(x, y, xAxis, yAxis, isInverted) {\n x = ((xAxis.valueType === 'Logarithmic') ?\n logBase(((x > 0) ? x : Math.pow(xAxis.logBase, xAxis.visibleRange.min)), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ?\n logBase(((y > 0) ? y : Math.pow(yAxis.logBase, yAxis.visibleRange.min)), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/** @private */\nexport function appendElement(child, parent, redraw, animate, x, y) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element.\n *\n * @param {boolean} isCanvas canvas mode value\n * @param {Element} parent parent element\n * @param {Element} childElement childElement element\n * @param {boolean} redraw chart redraw value\n * @param {boolean} isAnimate animation value\n * @param {string} x x position\n * @param {string} y y position\n * @param {ChartLocation} start start location value\n * @param {string} direction direction of the element\n * @param {boolean} forceAnimate forceAnimate\n * @param {boolean} isRect isRect\n * @param {Rect} previousRect previousRect\n * @param {number} animateDuration duration of the animation\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration, scatterElement) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (scatterElement === void 0) { scatterElement = false; }\n if (isCanvas) {\n return null;\n }\n var existChild = scatterElement ? null : parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = animateDuration ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n animateRedrawElement(child, duration, start, end, x, y);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/** @private */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/** @private */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/** @private */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.marker.dataLabel.format ? series.marker.dataLabel.format : series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if ((labelFormat || chart.useGroupingSeparator) && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/** @private */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/** @private */\nexport function isCollide(rect, collections, clipRect) {\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n var isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/** @private */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/** @private */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/** @private */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/** @private */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/** @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/** @private */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/** @private */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n var element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n // eslint-disable-next-line security/detect-unsafe-regex\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/** @private */\nexport function checkColorFormat(color) {\n // eslint-disable-next-line security/detect-unsafe-regex\n return /(rgba?\\((?:\\d{1,3}[,)]){3}(?:\\d+\\.\\d+\\))?)|(^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$)/gmi.test(color);\n}\n/** @private */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/** @private */\nexport function applyZLight(color, value) {\n var RGB = convertHexToColor(color);\n RGB.r = parseInt(Math.floor(RGB.r * value).toString(), 10);\n RGB.g = parseInt(Math.floor(RGB.g * value).toString(), 10);\n RGB.b = parseInt(Math.floor(RGB.b * value).toString(), 10);\n return '#' + componentToHex(RGB.r).toUpperCase() + componentToHex(RGB.g).toUpperCase() + componentToHex(RGB.b).toUpperCase();\n}\n/** @private */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/** @private */\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width * (3 / 4))) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width * (3 / 4))) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n case 'SplineRangeArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut':\n options.stroke = 'transparent';\n // eslint-disable-next-line no-case-declarations\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width, shape);\n merge(options, { 'd': dir });\n break;\n }\n return { renderOption: options };\n}\n/** @private */\nexport function textTrim(maxWidth, text, font, isRtlEnabled, themeFontStyle) {\n var label = text;\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = isRtlEnabled ? '...' + text.substring(0, i) : text.substring(0, i) + '...';\n size = measureText(label, font, themeFontStyle).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/** @private */\nexport function lineBreakLabelTrim(maxWidth, text, font, themeFontStyle) {\n var labelCollection = [];\n var breakLabels = text.split('
');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font, themeFontStyle).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/** @private */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/** @private */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/** @private */\nexport function animateRedrawElement(element, duration, start, end, x, y) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n }\n };\n setStyle(start.x, start.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y);\n }\n });\n}\n/** @private */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas, isDataLabelWrap, themeFontStyle) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var height;\n var dy;\n var label;\n var width = 0;\n var dx;\n var maxWidth = 0;\n if (option.text.length > 1 && isDataLabelWrap) {\n for (var i = 0, len = option.text.length; i < len; i++) {\n maxWidth = Math.max(maxWidth, measureText(option.text[i], font, themeFontStyle).width);\n }\n width = measureText(option.text[0], font, themeFontStyle).width;\n }\n dx = (option.text.length > 1 && isDataLabelWrap) ? (option.x + maxWidth / 2 - width / 2) : option.x;\n renderOptions = {\n 'id': option.id,\n 'x': dx,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeFontStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n var htmlObject = renderer.createText(renderOptions, text, transX, transY);\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font, themeFontStyle).height);\n width = measureText(option.text[i], font, themeFontStyle).width;\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n dx = isDataLabelWrap ? (option.x + maxWidth / 2 - width / 2) : option.x;\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': dx, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration);\n }\n return htmlObject;\n}\n/**\n * Method to calculate the width and height of the chart.\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.availableSize.width;\n containerHeight = chart.stockChart.availableSize.height;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle, range.themeStyle.axisLabelFont).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n if (chart.getModuleName() === 'chart') {\n var scaleX = 1;\n var scaleY = 1;\n if (chart.width === '' || chart.width === null || chart.width === '100%') {\n scaleX = chart.element.getBoundingClientRect().width > 0 ?\n chart.element.getBoundingClientRect().width / chart.availableSize.width : 1;\n scaleY = chart.element.getBoundingClientRect().height > 0 ?\n chart.element.getBoundingClientRect().height / chart.availableSize.height : 1;\n var transformValue = chart.element.style.transform;\n if (transformValue) {\n var scaleValue = parseFloat(transformValue.match(/scale\\((.*?)\\)/)[1]);\n scaleX = scaleValue ? scaleX / scaleValue : scaleX;\n scaleY = scaleValue ? scaleY / scaleValue : scaleY;\n }\n chart.availableSize.width = chart.availableSize.width * scaleX;\n chart.availableSize.height = chart.availableSize.height * scaleY;\n chart.scaleX = scaleX;\n chart.scaleY = scaleY;\n }\n }\n}\n/**\n * To create svg element.\n *\n * @param {Chart} chart chart instance\n */\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n if (chart.enableCanvas) {\n chart.renderer.ctx.direction = chart.enableRtl ? 'rtl' : 'ltr';\n }\n}\n/**\n * To calculate chart title and height.\n *\n * @param {string} title text of the title\n * @param {FontModel} style style of the title\n * @param {number} width width of the title\n */\nexport function getTitle(title, style, width, isRtlEnabled, themeFontStyle) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style, isRtlEnabled, null, null, themeFontStyle);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style, isRtlEnabled, themeFontStyle));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Method to calculate x position of title.\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Method to find new text and element size based on textOverflow.\n */\nexport function textWrap(currentLabel, maximumWidth, font, isRtlEnabled, wrapAnyWhere, clip, themeFontStyle) {\n if (wrapAnyWhere) {\n return (textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle));\n }\n else {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text = void 0;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(label === '' ? '' : ' ' + text), font, themeFontStyle).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, isRtlEnabled, themeFontStyle));\n label = text;\n }\n else {\n labelCollection.push(clip ? text : textTrim(maximumWidth, text, font, isRtlEnabled, themeFontStyle));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, isRtlEnabled, themeFontStyle));\n }\n }\n return labelCollection;\n }\n}\n/**\n * Method to find new text and element size based on textWrap.\n */\nexport function textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle) {\n var size = measureText(currentLabel, font, themeFontStyle).width;\n var labelCollection = [];\n if (size > maximumWidth) {\n var label = '';\n var startIndex = 0;\n var labelIndex = 1;\n while (labelIndex < currentLabel.length) {\n label = currentLabel.substring(startIndex, labelIndex);\n size = measureText(label, font, themeFontStyle).width;\n if (size < maximumWidth) {\n labelIndex++;\n }\n else if (size === maximumWidth) {\n startIndex = labelIndex;\n labelCollection.push(label);\n labelIndex++;\n label = '';\n }\n else if (size > maximumWidth) {\n label = label.slice(0, -1);\n startIndex = labelIndex - 1;\n labelCollection.push(label);\n label = '';\n }\n }\n if (label.length > 0) {\n labelCollection.push(label);\n }\n }\n else {\n labelCollection.push(currentLabel);\n }\n return labelCollection;\n}\n/**\n * Method to support the subscript and superscript value to text.\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Method to reset the blazor templates.\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color === null ? '' : border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.index = index;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar Point3D = /** @class */ (function () {\n /** @private */\n function Point3D(point, series) {\n this.point = point;\n this.series = series;\n }\n return Point3D;\n}());\nexport { Point3D };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n/** @private */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbgColorValue;\n if (Number(value) === colorMap.start) {\n color = colorMap.colors[0];\n }\n else if (Number(value) === colorMap.end) {\n color = colorMap.colors[colorMap.colors.length - 1];\n }\n else {\n rbgColorValue = getGradientColor(Number(value), colorMap);\n color = convertToHexCode(rbgColorValue);\n }\n return color;\n}\n/** @private */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.start;\n var nextOffset = colorMap.end;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.colors.length <= 2) {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n }\n else {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n var a = full / (colorMap.colors.length - 1);\n var b = void 0;\n var c = void 0;\n var length_2 = colorMap.colors.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_2; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.colors[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value <= splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/** @private */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/** @private */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/** @private */\nexport function getTextAnchor(alignment, enableRTL) {\n switch (alignment) {\n case 'Near':\n return enableRTL ? 'end' : 'start';\n case 'Far':\n return enableRTL ? 'start' : 'end';\n default:\n return 'middle';\n }\n}\n","//! 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","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var DropDownButtonItemsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-dropdownbuttonitems';\n }\n }\n});\nexport var DropDownButtonItemsPlugin = {\n name: 'e-dropdownbuttonitems',\n install: function (Vue) {\n Vue.component(DropDownButtonItemsPlugin.name, DropDownButtonItemsDirective);\n }\n};\nexport var DropDownButtonItemDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-dropdownbuttonitem';\n }\n }\n});\nexport var DropDownButtonItemPlugin = {\n name: 'e-dropdownbuttonitem',\n install: function (Vue) {\n Vue.component(DropDownButtonItemPlugin.name, DropDownButtonItemDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { DropDownButtonItemsDirective, DropDownButtonItemDirective, DropDownButtonItemsPlugin, DropDownButtonItemPlugin } from './items.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'closeActionEvents', 'content', 'createPopupOnClick', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'iconCss', 'iconPosition', 'items', 'locale', 'target', 'beforeClose', 'beforeItemRender', 'beforeOpen', 'close', 'created', 'open', 'select'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DropDownButton Component\n * ```html\n * DropDownButton\n * ```\n */\nexport var DropDownButtonComponent = vueDefineComponent({\n name: 'DropDownButtonComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DropDownButton({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-dropdownbuttonitems\": \"e-dropdownbuttonitem\" },\n tagNameMapper: { \"e-dropdownbuttonitems\": \"e-items\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('button', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n addItems: function (items, text) {\n return this.ej2Instances.addItems(items, text);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n removeItems: function (items, isUniqueId) {\n return this.ej2Instances.removeItems(items, isUniqueId);\n },\n toggle: function () {\n return this.ej2Instances.toggle();\n },\n }\n});\nexport var DropDownButtonPlugin = {\n name: 'ejs-dropdownbutton',\n install: function (Vue) {\n Vue.component(DropDownButtonPlugin.name, DropDownButtonComponent);\n Vue.component(DropDownButtonItemPlugin.name, DropDownButtonItemDirective);\n Vue.component(DropDownButtonItemsPlugin.name, DropDownButtonItemsDirective);\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","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener, applyBiggerTheme } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.isRightToolbarMenu = false;\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.isRightToolbarMenu = false;\n if (this.parent.enableAdaptiveUI && this.isResponsiveToolbarMenuItems(true) && ((this.parent.rowRenderingMode === 'Horizontal') ||\n (this.parent.rowRenderingMode === 'Vertical' && !this.parent.allowFiltering && !this.parent.allowSorting))) {\n this.isRightToolbarMenu = true;\n }\n if (isAdaptive && this.isResponsiveToolbarMenuItems(false)) {\n this.predefinedItems.responsiveToolbarItems = {\n id: this.gridID + '_' + 'responsivetoolbaritems', cssClass: 'e-responsive-toolbar-items e-menu-toolbar', suffixIcon: 'e-' + 'responsivetoolbaritems-btn',\n align: this.isRightToolbarMenu ? 'Left' : 'Right'\n };\n }\n else {\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n if (this.parent.enableAdaptiveUI) {\n if (isNullOrUndefined(this.responsiveToolbarMenu)) {\n this.renderResponsiveToolbarpopup();\n }\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.isResponsiveToolbarMenuItems = function (isRight) {\n var items = isRight ? ['Add', 'Edit', 'Delete', 'Search'] : ['Print', 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport'];\n var toolbarItems = this.parent.toolbar || [];\n for (var i = 0; i < items.length; i++) {\n if (toolbarItems.indexOf(items[parseInt(i.toString(), 10)]) >= 0) {\n return isRight ? false : true;\n }\n }\n return isRight ? true : false;\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (this.responsiveToolbarMenu) {\n this.responsiveToolbarMenu.destroy();\n }\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
';\n }\n }\n if (this.element.querySelector('.e-responsive-toolbar-items')) {\n this.element.querySelector('.e-responsive-toolbar-items').innerHTML = '\n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n this.dropDown.element.setAttribute('role', 'dialog');\n this.dropDown.element.setAttribute('aria-label', 'dropdown menu');\n if (!isNullOrUndefined(this.popupContent)) {\n this.popupContent.style.display = '';\n }\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n if (this.createPopupOnClick && !this.isColorPicker() && !isNullOrUndefined(this.popupContent)) {\n return this.popupContent;\n }\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1', 'aria-label': 'separator', 'aria-hidden': 'true' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n var beforeDisabled = item.disabled;\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n var afterDisabled = eventArgs.item.disabled;\n if (beforeDisabled !== afterDisabled) {\n if (eventArgs.item.disabled) {\n li.classList.add('e-disabled');\n }\n else {\n li.classList.remove('e-disabled');\n }\n }\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n this.element.setAttribute('aria-label', this.element.textContent ? this.element.textContent : 'dropdownbutton');\n if ((this.target && !this.isColorPicker() && !this.createPopupOnClick) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n if (this.target && !this.isColorPicker() && this.createPopupOnClick) {\n this.popupContent = this.getTargetElement();\n this.popupContent.style.display = 'none';\n }\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n };\n DropDownButton.prototype.windowResize = function () {\n if (!this.canOpen() && this.dropDown) {\n this.dropDown.refreshPosition(this.element);\n }\n };\n DropDownButton.prototype.popupWireEvents = function () {\n if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.triggerSelect(e);\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item, event: e };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && this.target !== '' && !this.isColorPicker() && !this.createPopupOnClick)) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var li = this.getLI(e.target);\n if (li) {\n this.triggerSelect(e);\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.triggerSelect = function (e) {\n var eventArgs;\n var liIdx;\n var item;\n var li = this.getLI(e.target);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n }\n else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + \"px\";\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker() || (_this.target && !_this.isColorPicker())) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CostAndPricingReportTemplate.vue?vue&type=style&index=0&id=7293d88f&prod&lang=css\"","/* eslint-disable jsdoc/require-returns */\n/**\n * Numeric Range.\n *\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /** @private */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /** @private */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /** @private */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /** @private */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolumeReportTemplate.vue?vue&type=style&index=0&id=9dc5c796&prod&lang=css\"","//! 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","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, Global, frozenDirection, isChildColumn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos } from '../base/util';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n /** @hidden */\n this.resizeProcess = false;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n if (this.parent.enableAdaptiveUI) {\n this.parent.element.classList.add('e-grid-autofit');\n }\n this.findColumn(columnName);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n var contentTextClone = contentTable.querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\");\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[parseInt(i.toString(), 10)].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[parseInt(i.toString(), 10)] = footerTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[parseInt(i.toString(), 10)] = contentTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = gObj.getColumns();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].visible) {\n tWidth = tWidth + parseFloat(element[parseInt(i.toString(), 10)].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid() && gObj.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[parseInt(i.toString(), 10)];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols(true, true);\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n var adaptiveClass = this.parent.enableAdaptiveUI ? ' e-bigger' : '';\n myTableDiv.className = this.parent.element.className + adaptiveClass;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = 0; i < text.length; i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[parseInt(i.toString(), 10)]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.refreshResizePosition, this.refreshResizePosition, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.refreshResizePosition, this.refreshResizePosition);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].parentElement.offsetHeight > 0) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler')) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n this.resizeProcess = true;\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n this.resizeProcess = false;\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { e: e, column: this.column };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeEnd, _this);\n EventHandler.add(_this.parent.element, Browser.touchMoveEvent, _this.resizing, _this);\n _this.updateCursor('add');\n });\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.refreshResizeFixedCols = function (pos) {\n var cols = this.parent.getColumns();\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n var th = [].slice.call(this.parent.getHeaderContent().querySelector('tbody').querySelectorAll('.e-fixedfreeze')).concat([].slice.call(this.parent.getContent().querySelectorAll('.e-fixedfreeze')));\n for (var i = 0; i < th.length; i++) {\n var node = th[parseInt(i.toString(), 10)];\n var column = void 0;\n if (node.classList.contains('e-summarycell')) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n }\n else {\n var index = parseInt(node.getAttribute('data-colindex'), 10);\n column = cols[parseInt(index.toString(), 10)];\n }\n var width = 0;\n if (pos === 'Left') {\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var j = 0; j < cols.length; j++) {\n if (column.index > cols[parseInt(j.toString(), 10)].index) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(j.toString(), 10)].freeze === 'Left' || cols[parseInt(j.toString(), 10)].isFrozen) ||\n cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this.parent.enableRtl, 'Left');\n }\n if (pos === 'Right') {\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var j = cols.length - 1; j >= 0; j--) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(j.toString(), 10)].freeze === 'Right' || cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, width + translateX, this.parent.enableRtl, 'Right');\n }\n }\n };\n Resize.prototype.refreshResizePosition = function () {\n this.refreshResizefrzCols(true);\n };\n Resize.prototype.refreshResizefrzCols = function (freezeRefresh, isAutoFitCol) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (freezeRefresh || ((this.column.freeze === 'Left' || this.column.isFrozen) ||\n (this.column.columns && frozenDirection(this.column) === 'Left'))) {\n var width_1 = this.parent.getIndentCount() * 30;\n var columns = this.parent.getColumns().filter(function (col) { return col.freeze === 'Left' || col.isFrozen; });\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Left');\n }\n for (var i = 0; i < columns.length; i++) {\n if (freezeRefresh || (columns[parseInt(i.toString(), 10)].index > this.column.index)) {\n var elements = [];\n if (this.parent.frozenRows) {\n elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width_1 - translateX, _this.parent.enableRtl, 'Left');\n });\n if (this.parent.enableColumnVirtualization) {\n columns[parseInt(i.toString(), 10)].valueX = width_1;\n }\n }\n if (columns[parseInt(i.toString(), 10)].visible) {\n width_1 += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n }\n this.refreshResizeFixedCols('Left');\n }\n if (freezeRefresh || (this.column.freeze === 'Right' || (this.column.columns && frozenDirection(this.column) === 'Right'))) {\n var width_2 = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n var columns = this.parent.getColumns();\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Right');\n }\n var columnsRight = columns.filter(function (col) { return col.freeze === 'Right'; });\n for (var i = columns.length - 1; i >= columns.length - columnsRight.length; i--) {\n var elements = [];\n if (this.parent.frozenRows) {\n elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width_2 + translateX, _this.parent.enableRtl, 'Right');\n });\n if (this.parent.enableColumnVirtualization) {\n columns[parseInt(i.toString(), 10)].valueX = width_2;\n }\n if (columns[parseInt(i.toString(), 10)].visible) {\n width_2 = width_2 + parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n }\n this.refreshResizeFixedCols('Right');\n }\n if (this.column && (this.column.freeze === 'Fixed' || (this.column.columns && frozenDirection(this.column) === 'Fixed'))) {\n this.refreshResizeFixedCols('Left');\n this.refreshResizeFixedCols('Right');\n this.frzHdrRefresh('Left');\n this.frzHdrRefresh('Right');\n }\n if (this.parent.groupSettings.columns.length && this.parent.aggregates.length &&\n this.parent.getContent().querySelector('.e-groupcaptionrow')) {\n this.refreshGroupCaptionRow();\n }\n };\n Resize.prototype.refreshGroupCaptionRow = function () {\n var capRow = [].slice.call(this.parent.getContent().querySelectorAll('.e-groupcaptionrow'));\n for (var i = 0; i < capRow.length; i++) {\n var tr = capRow[parseInt(i.toString(), 10)];\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n }\n };\n Resize.prototype.frzHdrRefresh = function (pos) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (pos === 'Left') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-fixedfreeze'));\n var _loop_1 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n if (node.classList.contains('e-rowdragheader') || node.classList.contains('e-dragheadercell') ||\n node.classList.contains('e-grouptopleftcell')) {\n return \"continue\";\n }\n var column = this_1.getParticularCol(node);\n var cols = this_1.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_1.parent.aggregates.length && this_1.parent.getFooterContent()) {\n if (this_1.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_1.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_1.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n if (this_1.parent.getVisibleFrozenLeftCount()) {\n width = this_1.parent.getIndentCount() * 30;\n }\n else if (this_1.parent.getFrozenMode() === 'Right') {\n width = this_1.parent.groupSettings.columns.length * 30;\n }\n for (var w = 0; w < cols.length; w++) {\n if (column.index > cols[parseInt(w.toString(), 10)].index) {\n if (column.uid === cols[parseInt(w.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(w.toString(), 10)].freeze === 'Left' || cols[parseInt(w.toString(), 10)].isFrozen) ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(w.toString(), 10)].width.toString(), 10);\n }\n }\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this_1.parent.enableRtl, 'Left');\n }\n else {\n width = this_1.parent.getIndentCount() * 30;\n if (column.index === 0) {\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_1.parent.enableRtl, 'Left');\n if (this_1.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n for (var k = 0; k < cols.length; k++) {\n if (column.index < cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_1.parent.enableRtl, 'Left');\n if (this_1.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < th.length; j++) {\n _loop_1(j);\n }\n }\n }\n if (pos === 'Right') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-rightfreeze, .e-fixedfreeze'));\n var _loop_2 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n var column = this_2.getParticularCol(node);\n var cols = this_2.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_2.parent.aggregates.length && this_2.parent.getFooterContent()) {\n if (this_2.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_2.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_2.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n width = this_2.parent.getFrozenMode() === 'Right' && this_2.parent.isRowDragable() ? 30 : 0;\n for (var w = cols.length - 1; w >= 0; w--) {\n if (column.index < cols[parseInt(w.toString(), 10)].index) {\n if ((column.columns && isChildColumn(column, cols[parseInt(w.toString(), 10)].uid)) ||\n column.index > cols[parseInt(w.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(w.toString(), 10)].freeze === 'Right' ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(w.toString(), 10)].width.toString());\n }\n }\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_2.parent.enableRtl, 'Right');\n }\n else {\n width = this_2.parent.getFrozenMode() === 'Right' && this_2.parent.isRowDragable() ? 30 : 0;\n for (var k = cols.length - 1; k >= 0; k--) {\n if ((column.columns && isChildColumn(column, cols[parseInt(k.toString(), 10)].uid)) ||\n column.index > cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_2.parent.enableRtl, 'Right');\n if (this_2.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n };\n var this_2 = this;\n for (var j = th.length - 1; j >= 0; j--) {\n _loop_2(j);\n }\n }\n }\n };\n Resize.prototype.getParticularCol = function (node) {\n var uid = node.classList.contains('e-filterbarcell') ? node.getAttribute('e-mappinguid') :\n node.querySelector('[e-mappinguid]').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols();\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n this.resizeProcess = true;\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.resizeProcess = false;\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n var gObj = this.parent;\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n this.isFrozenColResized = false;\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_2 = columns; _b < columns_2.length; _b++) {\n var column = columns_2[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n width = this.getStackedWidth(col, width);\n }\n else {\n width += parseFloat(col.width.toString());\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[\"\" + action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var height = this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[parseInt(i.toString(), 10)].offsetHeight;\n }\n var pos = this.calcPos(rect);\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === '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 pt = moment.defineLocale('pt', {\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 HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY 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: '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 w: 'uma semana',\n ww: '%d semanas',\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 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 pt;\n\n})));\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === '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 paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\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 // Punjabi 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 Punjabi.\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 paIn;\n\n})));\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === '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 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\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: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\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 gd;\n\n})));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\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 nl = moment.defineLocale('nl', {\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 w: 'één week',\n ww: '%d weken',\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 nl;\n\n})));\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { ChartLocation, RectOption, isCollide, isOverlap } from '../../common/utils/helper';\nimport { markerAnimate, appendChildElement, getVisiblePoints } from '../../common/utils/helper';\nimport { getLabelText, convertHexToColor, calculateRect, textElement, colorNameToHex } from '../../common/utils/helper';\nimport { measureText, TextOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { textRender } from '../../common/model/constants';\nimport { createTemplate, getFontStyle, getElement, measureElementRect, templateAnimate, withIn, withInBounds } from '../../common/utils/helper';\nimport { createElement, getValue, extend } from '@syncfusion/ej2-base';\nimport { getPoint, getRotatedRectangleCoordinates, isRotatedRectIntersect } from '../../common/utils/helper';\n/**\n * `DataLabel` module is used to render data label for the data point.\n */\nvar DataLabel = /** @class */ (function () {\n /**\n * Constructor for the data label module.\n *\n * @private\n */\n function DataLabel(chart) {\n this.errorHeight = 0;\n this.chart = chart;\n }\n DataLabel.prototype.initPrivateVariables = function (series, marker) {\n var transform = '';\n var clipPath = '';\n var render = series.chart.renderer;\n var index = (series.index === undefined) ? series.category : series.index;\n if (series.chart.chartAreaType === 'Cartesian') {\n transform = 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')';\n clipPath = 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')';\n }\n if (marker.dataLabel.visible && !this.chart.enableCanvas) {\n series.shapeElement = render.createGroup({\n 'id': this.chart.element.id + 'ShapeGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')'\n });\n series.textElement = render.createGroup({\n 'id': this.chart.element.id + 'TextGroup' + index,\n 'transform': transform,\n 'clip-path': clipPath\n });\n series.textElement.setAttribute('aria-hidden', 'true');\n }\n this.markerHeight = ((series.type === 'Scatter' || marker.visible)) ? (marker.height / 2) : 0;\n this.commonId = this.chart.element.id + '_Series_' + index + '_Point_';\n this.calculateErrorHeight(series, series.marker.dataLabel.position);\n this.chartBackground = this.chart.chartArea.background === 'transparent' ?\n this.chart.background || this.chart.themeStyle.background : this.chart.chartArea.background;\n };\n DataLabel.prototype.calculateErrorHeight = function (series, position) {\n if (!series.errorBar.visible) {\n return null;\n }\n else if (series.errorBar.visible && this.chart.chartAreaType !== 'PolarRadar') {\n var direction = series.errorBar.direction;\n var positiveHeight = this.chart.errorBarModule.positiveHeight;\n var negativeHeight = this.chart.errorBarModule.negativeHeight;\n if (this.isRectSeries(series)) {\n if (position === 'Top' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Outer' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Plus') {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n else {\n if (position === 'Top' || position === 'Outer' || position === 'Auto') {\n if ((direction === 'Both' || direction === 'Plus') && (!series.chart.isTransposed)) {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Bottom' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n }\n else {\n this.errorHeight = 0;\n }\n };\n DataLabel.prototype.isRectSeries = function (series) {\n return series.isRectSeries || series.type === 'RangeArea' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea';\n };\n /**\n * Render the data label for series.\n *\n * @returns {void}\n */\n DataLabel.prototype.render = function (series, chart, dataLabel) {\n // initialize the private variable\n this.initPrivateVariables(series, series.marker);\n var rect;\n var labelLocation = { x: 0, y: 0 };\n var rgbValue;\n var contrast;\n var argsData;\n var border;\n var textSize;\n var angle;\n var degree;\n this.inverted = chart.requireInvertedAxis;\n this.yAxisInversed = series.yAxis.isAxisInverse;\n var redraw = chart.redraw;\n var isDataLabelOverlap = false;\n var coordinatesAfterRotation = [];\n var templateId = chart.element.id + '_Series_' +\n (series.index === undefined ? series.category : series.index) + '_DataLabelCollections';\n var element = createElement('div', {\n id: templateId\n });\n var visiblePoints = getVisiblePoints(series);\n var point;\n var rectCenterX;\n var rectCenterY;\n // Data label point iteration started\n for (var i = 0; i < visiblePoints.length; i++) {\n point = visiblePoints[i];\n if (!dataLabel.showZero && ((point.y !== 0) || (point.y === 0 && series.emptyPointSettings.mode === 'Zero'))) {\n return null;\n }\n this.margin = dataLabel.margin;\n var labelText = [];\n var labelLength = void 0;\n var xPos = void 0;\n var yPos = void 0;\n var xValue = void 0;\n var yValue = void 0;\n var isRender = true;\n var clip = series.clipRect;\n var shapeRect = void 0;\n isDataLabelOverlap = false;\n dataLabel.angle = dataLabel.labelIntersectAction === 'Rotate90' ? 90 : dataLabel.angle;\n dataLabel.enableRotation = dataLabel.labelIntersectAction === 'Rotate90' ? true : dataLabel.enableRotation;\n angle = degree = dataLabel.angle;\n border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n if ((point.symbolLocations.length && point.symbolLocations[0]) ||\n (series.type === 'BoxAndWhisker' && point.regions.length)) {\n labelText = getLabelText(point, series, chart);\n labelLength = labelText.length;\n for (var i_1 = 0; i_1 < labelLength; i_1++) {\n argsData = {\n cancel: false, name: textRender, series: series,\n point: point, text: labelText[i_1], border: border,\n color: dataLabel.fill, template: dataLabel.template, font: argsFont, location: labelLocation,\n textSize: measureText(labelText[i_1], dataLabel.font, this.chart.themeStyle.datalabelFont)\n };\n chart.trigger(textRender, argsData);\n if (!argsData.cancel) {\n this.fontBackground = argsData.color;\n this.isDataLabelShape(argsData);\n this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;\n if (argsData.template !== null) {\n this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i_1, redraw);\n }\n else {\n textSize = measureText(argsData.text, dataLabel.font, this.chart.themeStyle.datalabelFont);\n rect = this.calculateTextPosition(point, series, textSize, dataLabel, i_1);\n // To check whether the polar radar chart datalabel intersects the axis label or not\n if (chart.chartAreaType === 'PolarRadar') {\n for (var _i = 0, _a = chart.chartAxisLayoutPanel.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rectRegion = _a[_i];\n if (isOverlap(new Rect(rect.x, rect.y, rect.width, rect.height), rectRegion)) {\n isRender = false;\n break;\n }\n }\n }\n var actualRect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);\n //let notOverlapping: boolean;\n if (dataLabel.enableRotation) {\n var rectCoordinates = this.getRectanglePoints(rect);\n rectCenterX = rect.x + (rect.width / 2);\n rectCenterY = (rect.y + (rect.height / 2));\n coordinatesAfterRotation = getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle);\n isDataLabelOverlap = (dataLabel.labelIntersectAction === 'Rotate90' || angle == -90) ? false : this.isDataLabelOverlapWithChartBound(coordinatesAfterRotation, chart, clip);\n if (!isDataLabelOverlap) {\n this.chart.rotatedDataLabelCollections.push(coordinatesAfterRotation);\n var currentPointIndex = this.chart.rotatedDataLabelCollections.length - 1;\n for (var index = currentPointIndex; index >= 0; index--) {\n if (this.chart.rotatedDataLabelCollections[currentPointIndex] &&\n this.chart.rotatedDataLabelCollections[index - 1] &&\n isRotatedRectIntersect(this.chart.rotatedDataLabelCollections[currentPointIndex], this.chart.rotatedDataLabelCollections[index - 1])) {\n isDataLabelOverlap = true;\n this.chart.rotatedDataLabelCollections[currentPointIndex] = null;\n break;\n }\n }\n }\n }\n else {\n isDataLabelOverlap = isCollide(rect, chart.dataLabelCollections, clip);\n }\n if ((!isDataLabelOverlap || dataLabel.labelIntersectAction === 'None') && isRender) {\n chart.dataLabelCollections.push(actualRect);\n if (this.isShape) {\n shapeRect = chart.renderer.drawRectangle(new RectOption(this.commonId + point.index + '_TextShape_' + i_1, argsData.color, argsData.border, dataLabel.opacity, rect, dataLabel.rx, dataLabel.ry), new Int32Array([clip.x, clip.y]));\n if (series.shapeElement) {\n series.shapeElement.appendChild(shapeRect);\n }\n }\n // Checking the font color\n var backgroundColor = this.fontBackground === 'transparent' ? ((this.chart.theme.indexOf('Dark') > -1 || this.chart.theme === 'HighContrast') ? 'black' : 'white') : this.fontBackground;\n rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n xPos = (rect.x + this.margin.left + textSize.width / 2) + labelLocation.x;\n yPos = (rect.y + this.margin.top + textSize.height * 3 / 4) + labelLocation.y;\n labelLocation = { x: 0, y: 0 };\n if (angle !== 0 && dataLabel.enableRotation) {\n // xValue = xPos - (dataLabel.margin.left) / 2 + (dataLabel.margin.right / 2);\n xValue = rectCenterX;\n //yValue = yPos - (dataLabel.margin.top) / 2 - (textSize.height / dataLabel.margin.top) +\n // (dataLabel.margin.bottom) / 2;\n yValue = rectCenterY;\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n xValue = rect.x;\n yValue = rect.y;\n xPos -= chart.chartAreaType == 'Cartesian' && xPos + (textSize.width / 2) > clip.width ? (xPos + textSize.width / 2) - clip.width : 0;\n yPos -= (yPos + textSize.height > clip.y + clip.height && !(series.type.indexOf('Bar') > -1)) ? (yPos + textSize.height) - (clip.y + clip.height) : 0;\n }\n var textAnchor = dataLabel.labelIntersectAction === 'Rotate90' ? (dataLabel.position == 'Top' ? 'start' : (dataLabel.position == 'Middle' ? 'middle' : 'end')) :\n ((angle == -90 && dataLabel.enableRotation) ? (dataLabel.position == 'Top' ? 'end' : (dataLabel.position == 'Middle' ? 'middle' : 'start')) : 'middle');\n textElement(chart.renderer, new TextOption(this.commonId + point.index + '_Text_' + i_1, xPos, yPos, textAnchor, argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color ||\n ((contrast >= 128 || series.type === 'Hilo' || series.type === 'HiloOpenClose') ? 'black' : 'white'), series.textElement, false, redraw, true, false, series.chart.duration, series.clipRect, null, null, chart.enableCanvas, null, this.chart.themeStyle.datalabelFont);\n }\n }\n }\n }\n }\n }\n if (element.childElementCount) {\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, getElement(chart.element.id + '_Secondary_Element'), element, chart.redraw, \n // eslint-disable-next-line @typescript-eslint/indent\n false, 'x', 'y', null, '', false, false, null, chart.duration);\n }\n else {\n getElement(chart.element.id + '_Secondary_Element').appendChild(element);\n }\n }\n };\n /**\n * Get rect coordinates\n */\n DataLabel.prototype.getRectanglePoints = function (rect) {\n var loc1 = new ChartLocation(rect.x, rect.y);\n var loc2 = new ChartLocation(rect.x + rect.width, rect.y);\n var loc3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var loc4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [loc1, loc2, loc3, loc4];\n };\n DataLabel.prototype.isDataLabelOverlapWithChartBound = function (rectCoordinates, chart, clip) {\n for (var index = 0; index < rectCoordinates.length; index++) {\n if (!withInBounds(rectCoordinates[index].x + clip.x, rectCoordinates[index].y + clip.y, chart.initialClipRect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Render the data label template.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.createDataLabelTemplate = function (parentElement, series, dataLabel, point, data, labelIndex, redraw) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n var clip = series.clipRect;\n var childElement = createTemplate(createElement('div', {\n id: this.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabel_'\n + point.index + (labelIndex ? ('_' + labelIndex) : ''),\n styles: 'position: absolute;background-color:' + data.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'\n }), point.index, data.template, this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);\n this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);\n };\n DataLabel.prototype.calculateTemplateLabelSize = function (parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, isReactCallback) {\n var elementRect = measureElementRect(childElement, redraw, isReactCallback);\n var rect = this.calculateTextPosition(point, series, { width: elementRect.width, height: elementRect.height }, dataLabel, labelIndex);\n var clipWidth = 0;\n var clipHeight = 0;\n var isOverlap = false;\n if (isReactCallback) {\n isOverlap = (elementRect.width === 0 || elementRect.height === 0); // To check the data label already overlap before react callback call\n // clipWidth = ((series.clipRect.x + rect.x) + elementRect.width) > parentElement.clientWidth ?\n // (parentElement.clientWidth - (series.clipRect.x + rect.x)) : 0;\n // clipHeight = (series.points.length - 1 === point.index) ? elementRect.height / 2 : 0;\n }\n childElement.style.left = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.x) + rect.x - clipWidth) + 'px';\n childElement.style.top = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.y) + rect.y + clipHeight) + 'px';\n var backgroundColor = this.fontBackground === 'transparent' ? (this.chart.theme.indexOf('Dark') > -1 ? 'black' : 'white') : this.fontBackground;\n var rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n var vAxis = series.chart.requireInvertedAxis ? series.xAxis : series.yAxis;\n var hAxis = series.chart.requireInvertedAxis ? series.yAxis : series.xAxis;\n childElement.style.color = dataLabel.font.color ||\n ((Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000)) >= 128 ? 'black' : 'white');\n if (childElement.childElementCount && !isOverlap && (!isCollide(rect, this.chart.dataLabelCollections, clip) ||\n dataLabel.labelIntersectAction === 'None') && (series.seriesType !== 'XY' || point.yValue === undefined ||\n withIn(point.yValue, series.yAxis.visibleRange) || (series.type.indexOf('Stacking') > -1) ||\n (series.type.indexOf('100') > -1 && withIn(series.stackedValues.endValues[point.index], series.yAxis.visibleRange))) &&\n withIn(point.xValue, series.xAxis.visibleRange) && parseFloat(childElement.style.top) >= vAxis.rect.y &&\n parseFloat(childElement.style.left) >= hAxis.rect.x &&\n parseFloat(childElement.style.top) <= vAxis.rect.y + vAxis.rect.height &&\n parseFloat(childElement.style.left) <= hAxis.rect.x + hAxis.rect.width) {\n this.chart.dataLabelCollections.push(new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height));\n appendChildElement(this.chart.enableCanvas, parentElement, childElement, redraw, true, 'left', 'top');\n if (series.animation.enable && this.chart.animateSeries && !this.chart.enableCanvas) {\n this.doDataLabelAnimation(series, childElement);\n }\n else if (this.chart.enableCanvas) {\n parentElement.appendChild(childElement);\n }\n }\n };\n DataLabel.prototype.calculateTextPosition = function (point, series, textSize, dataLabel, labelIndex) {\n var labelRegion = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var location;\n location = this.getLabelLocation(point, series, textSize, labelIndex);\n var padding = 5;\n var clipRect = series.clipRect;\n // calculating alignment\n if (!this.chart.requireInvertedAxis || !this.isRectSeries(series) || series.type === 'BoxAndWhisker') {\n this.locationX = location.x;\n var alignmentValue = textSize.height + (this.borderWidth * 2) + this.markerHeight +\n this.margin.bottom + this.margin.top + padding;\n location.x = (dataLabel.position === 'Auto') ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, this.isRectSeries(series) ? point.yValue < 0 : false);\n // calculating position\n location.y = (!this.isRectSeries(series) || series.type === 'BoxAndWhisker') ?\n this.calculatePathPosition(location.y, dataLabel.position, series, point, textSize, labelIndex) :\n this.calculateRectPosition(location.y, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n if (this.isRectSeries(series) && this.chart.chartAreaType === 'PolarRadar') {\n location = this.calculatePolarRectPosition(location, dataLabel.position, series, point, textSize, labelIndex, dataLabel.alignment, alignmentValue);\n }\n }\n else {\n this.locationY = location.y;\n var alignmentValue = textSize.width + this.borderWidth + this.margin.left + this.margin.right - padding;\n location.x = dataLabel.position === 'Auto' ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, point.yValue < 0);\n location.x = this.calculateRectPosition(location.x, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n }\n var rect = calculateRect(location, textSize, this.margin);\n // Checking the condition whether data Label has been exist the clip rect\n if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&\n !((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||\n (rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {\n rect.x = rect.x < 0 ? padding : rect.x;\n rect.y = (rect.y < 0) && !(dataLabel.labelIntersectAction === 'None') ? padding : rect.y;\n rect.x -= (rect.x + rect.width) > (clipRect.x + clipRect.width) ? (rect.x + rect.width)\n - (clipRect.x + clipRect.width) + padding : 0;\n rect.y -= (rect.y + rect.height) > (clipRect.y + clipRect.height) ? (rect.y + rect.height)\n - (clipRect.y + clipRect.height) + padding : 0;\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n }\n var dataLabelOutRegion;\n if (this.inverted && series.isRectSeries && (rect.x + rect.width > labelRegion.x + labelRegion.width)) {\n dataLabelOutRegion = true;\n }\n this.fontBackground = dataLabelOutRegion ? this.chartBackground : this.fontBackground;\n return rect;\n };\n // Calculation label location for polar column draw types\n DataLabel.prototype.calculatePolarRectPosition = function (location, position, series, point, size, labelIndex, alignment, alignmentValue) {\n var padding = 5;\n var columnRadius;\n var chartWidth = this.chart.availableSize.width;\n var alignmentSign = (alignment === 'Center') ? 0 : (alignment === 'Far' ? 1 : -1);\n var angle = (point.regionData.startAngle - 0.5 * Math.PI) + (point.regionData.endAngle - point.regionData.startAngle) / 2;\n if (labelIndex === 0) {\n columnRadius = point.regionData.radius < point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n else {\n columnRadius = point.regionData.radius > point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n if (series.drawType.indexOf('Stacking') > -1) {\n position = position === 'Outer' ? 'Top' : position;\n }\n else if (series.drawType.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n if (position === 'Outer') {\n columnRadius = labelIndex === 0 ? columnRadius + 2 * padding + this.markerHeight :\n columnRadius - 2 * padding - this.markerHeight;\n }\n else if (position === 'Middle') {\n columnRadius = columnRadius / 2 + padding;\n if (series.drawType === 'StackingColumn') {\n columnRadius = point.regionData.innerRadius + ((point.regionData.radius - point.regionData.innerRadius) / 2)\n + padding - (size.height / 2);\n }\n }\n else if (position === 'Top') {\n columnRadius = labelIndex === 0 ? columnRadius - 2 * padding - this.markerHeight :\n columnRadius + 2 * padding + this.markerHeight;\n }\n else if (position === 'Bottom') {\n columnRadius = 2 * padding;\n columnRadius += (series.drawType === 'StackingColumn') ? (point.regionData.innerRadius + this.markerHeight) : 0;\n }\n else {\n if (labelIndex === 0) {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius - padding :\n series.drawType === 'StackingColumn' ? columnRadius - 2 * padding : columnRadius + 2 * padding;\n }\n else {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius + padding : columnRadius - 2 * padding;\n }\n }\n columnRadius += (alignmentValue * alignmentSign);\n location.x = series.clipRect.width / 2 + series.clipRect.x + columnRadius * Math.cos(angle);\n // To change x location based on text anchor for column and stackingcolumn chart\n if (series.drawType === 'StackingColumn') {\n location.x = location.x < chartWidth / 2 ? location.x + size.width / 2 :\n (location.x > chartWidth / 2 ? location.x - size.width / 2 : location.x);\n }\n else if (series.drawType === 'Column') {\n location.x = location.x < chartWidth / 2 ? location.x - size.width / 2 :\n (location.x > chartWidth / 2 ? location.x + size.width / 2 : location.x);\n }\n location.y = series.clipRect.height / 2 + series.clipRect.y + columnRadius * Math.sin(angle);\n return location;\n };\n /**\n * Get the label location\n */\n DataLabel.prototype.getLabelLocation = function (point, series, textSize, labelIndex) {\n var location = new ChartLocation(0, 0);\n var labelRegion = (series.type === 'Candle' && labelIndex > 1) ? point.regions[1] : point.regions[0];\n if (series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n var isInverted = series.chart.requireInvertedAxis;\n if (series.type === 'BoxAndWhisker') {\n this.markerHeight = 0;\n switch (labelIndex) {\n case 0:\n location = getPoint(point.xValue, point.median, xAxis, yAxis, isInverted);\n break;\n case 1:\n location = getPoint(point.xValue, point.maximum, xAxis, yAxis, isInverted);\n break;\n case 2:\n location = getPoint(point.xValue, point.minimum, xAxis, yAxis, isInverted);\n break;\n case 3:\n location = getPoint(point.xValue, point.upperQuartile, xAxis, yAxis, isInverted);\n break;\n case 4:\n location = getPoint(point.xValue, point.lowerQuartile, xAxis, yAxis, isInverted);\n break;\n default: {\n location = getPoint(point.xValue, point.outliers[labelIndex - 5], xAxis, yAxis, isInverted);\n this.markerHeight = series.marker.height / 2;\n break;\n }\n }\n if (isInverted) {\n location.y = point.regions[0].y + (point.regions[0].height / 2);\n }\n else {\n location.x = point.regions[0].x + (point.regions[0].width / 2);\n }\n }\n else if (labelIndex === 0 || labelIndex === 1) {\n location = new ChartLocation(point.symbolLocations[0].x, point.symbolLocations[0].y);\n }\n else if ((labelIndex === 2 || labelIndex === 3) && series.type === 'Candle') {\n location = new ChartLocation(point.symbolLocations[1].x, point.symbolLocations[1].y);\n }\n else if (isInverted) {\n location = { x: labelRegion.x + (labelRegion.width) / 2, y: labelRegion.y };\n }\n else {\n location = { x: labelRegion.x + labelRegion.width, y: labelRegion.y + (labelRegion.height) / 2 };\n }\n //Aligning the label at the beginning of the tick, when tick size is less than text size\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n if (series.chart.requireInvertedAxis) {\n var height = labelRegion.height;\n location.y = labelRegion.y + height / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n else {\n var width = labelRegion.width;\n location.x = labelRegion.x + width / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n }\n return location;\n };\n DataLabel.prototype.calculateRectPosition = function (labelLocation, rect, isMinus, position, series, textSize, labelIndex, point) {\n if (series.chart.chartAreaType === 'PolarRadar') {\n return null;\n }\n var padding = 5;\n var margin = this.margin;\n var textLength = !this.inverted ? textSize.height : textSize.width;\n var extraSpace = this.borderWidth + textLength / 2 + (position !== 'Outer' && series.type.indexOf('Column') > -1 &&\n (Math.abs(rect.height - textSize.height) < padding) ? 0 : padding);\n if (series.type === 'StackingColumn100' || series.type === 'StackingBar100') {\n position = (position === 'Outer') ? 'Top' : position;\n }\n else if (series.type.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n else if (series.type === 'Waterfall') {\n position = position === 'Auto' ? 'Middle' : position;\n }\n switch (position) {\n case 'Bottom':\n labelLocation = !this.inverted ?\n isMinus ? (labelLocation + (series.type === 'Waterfall' ? (-extraSpace - margin.top - this.markerHeight) : (-rect.height + extraSpace + margin.top))) :\n (labelLocation + rect.height - extraSpace - margin.bottom) :\n isMinus ? (labelLocation + (series.type === 'Waterfall' ? (+extraSpace + margin.left + this.markerHeight) : (+rect.width - extraSpace - margin.left))) :\n (labelLocation - rect.width + extraSpace + margin.right);\n break;\n case 'Middle':\n labelLocation = labelLocation = !this.inverted ?\n (isMinus ? labelLocation - (rect.height / 2) : labelLocation + (rect.height / 2)) :\n (isMinus ? labelLocation + (rect.width / 2) : labelLocation - (rect.width / 2));\n break;\n case 'Auto':\n labelLocation = this.calculateRectActualPosition(labelLocation, rect, isMinus, series, textSize, labelIndex, point);\n break;\n default:\n extraSpace += this.errorHeight;\n labelLocation = this.calculateTopAndOuterPosition(labelLocation, rect, position, series, labelIndex, extraSpace, isMinus);\n break;\n }\n var check = !this.inverted ? (labelLocation < rect.y || labelLocation > rect.y + rect.height) :\n (labelLocation < rect.x || labelLocation > rect.x + rect.width);\n this.fontBackground = check ?\n (this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground)\n : this.fontBackground === 'transparent' ? (point.color || series.interior) : this.fontBackground;\n var seriesLength = series.chart.series.length;\n if (position === 'Outer' && (series.type.indexOf('Stacking') > -1) && ((seriesLength - 1) > series.index)) {\n var nextSeries = void 0;\n var nextSeriesPoint = void 0;\n for (var i = series.index + 1; i < seriesLength; i++) {\n nextSeries = series.chart.series[i];\n nextSeriesPoint = nextSeries.points[point.index];\n if ((nextSeries.type.indexOf('Stacking') > -1) && (nextSeries.type.indexOf('100') === -1)) {\n this.fontBackground = (nextSeriesPoint && ((nextSeriesPoint.yValue < 0 && point.yValue < 0) ||\n (nextSeriesPoint.yValue > 0 && point.yValue > 0))) ? (nextSeriesPoint ? nextSeriesPoint.color :\n nextSeries.interior) : this.fontBackground;\n break;\n }\n }\n }\n return labelLocation;\n };\n DataLabel.prototype.calculatePathPosition = function (labelLocation, position, series, point, size, labelIndex) {\n var padding = 5;\n if ((series.type.indexOf('Area') > -1 && series.type !== 'RangeArea' && series.type !== 'SplineRangeArea' && series.type !== 'RangeStepArea')\n && this.yAxisInversed && series.marker.dataLabel.position !== 'Auto') {\n position = position === 'Top' ? 'Bottom' : position === 'Bottom' ? 'Top' : position;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n switch (position) {\n case 'Top':\n case 'Outer':\n labelLocation = labelLocation - this.markerHeight - this.borderWidth - size.height / 2 - this.margin.bottom - padding -\n this.errorHeight;\n break;\n case 'Bottom':\n labelLocation = labelLocation + this.markerHeight + this.borderWidth + size.height / 2 + this.margin.top + padding +\n this.errorHeight;\n break;\n case 'Auto':\n labelLocation = this.calculatePathActualPosition(labelLocation, this.markerHeight, series, point, size, labelIndex);\n break;\n }\n return labelLocation;\n };\n DataLabel.prototype.isDataLabelShape = function (style) {\n this.isShape = (style.color !== 'transparent' || style.border.width > 0);\n this.borderWidth = style.border.width;\n if (!this.isShape) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n }\n };\n DataLabel.prototype.calculateRectActualPosition = function (labelLocation, rect, isMinus, series, size, labelIndex, point) {\n var location;\n var labelRect;\n var isOverLap = true;\n var position = 0;\n var collection = this.chart.dataLabelCollections;\n var finalPosition = series.type.indexOf('Range') !== -1 || series.type === 'Hilo' ? 2 : 4;\n while (isOverLap && position < finalPosition) {\n var actualPosition = this.getPosition(position);\n if (series.type.indexOf('Stacking') > -1 && actualPosition === 'Outer') {\n actualPosition = 'Top';\n position++;\n }\n location = this.calculateRectPosition(labelLocation, rect, isMinus, actualPosition, series, size, labelIndex, point);\n if (!this.inverted) {\n labelRect = calculateRect(new ChartLocation(this.locationX, location), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect) || labelRect.y > series.clipRect.height;\n }\n else {\n labelRect = calculateRect(new ChartLocation(location, this.locationY), size, this.margin);\n isOverLap = labelRect.x < 0 || isCollide(labelRect, collection, series.clipRect) ||\n labelRect.x + labelRect.width > series.clipRect.width;\n }\n position++;\n }\n return location;\n };\n // alignment calculation assigned here\n DataLabel.prototype.calculateAlignment = function (value, labelLocation, alignment, isMinus) {\n switch (alignment) {\n case 'Far':\n labelLocation = !this.inverted ? (isMinus ? labelLocation + value : labelLocation - value) :\n (isMinus ? labelLocation - value : labelLocation + value);\n break;\n case 'Near':\n labelLocation = !this.inverted ? (isMinus ? labelLocation - value : labelLocation + value) :\n (isMinus ? labelLocation + value : labelLocation - value);\n break;\n // eslint-disable-next-line no-self-assign\n case 'Center':\n labelLocation = labelLocation;\n break;\n }\n return labelLocation;\n };\n //calculation for top and outer position of datalabel for rect series\n DataLabel.prototype.calculateTopAndOuterPosition = function (location, rect, position, series, index, extraSpace, isMinus) {\n var margin = this.margin;\n var top;\n switch (series.type) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n break;\n case 'Candle':\n top = (index === 0 || index === 2) && !this.yAxisInversed\n || (index === 1 || index === 3) && this.yAxisInversed;\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top, index > 1);\n break;\n case 'HiloOpenClose':\n if (index <= 1) {\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n }\n else {\n if (this.yAxisInversed) {\n location = !this.inverted ? location + extraSpace + margin.top : location - extraSpace - margin.right;\n }\n else {\n location = !this.inverted ? location - extraSpace - margin.bottom : location + extraSpace + margin.left;\n }\n }\n break;\n default:\n if ((isMinus && position === 'Top') || (!isMinus && position === 'Outer')) {\n location = !this.inverted ? location + (isMinus && series.type === 'Waterfall' ? (-rect.height + extraSpace + margin.bottom) : (-extraSpace - margin.bottom - this.markerHeight)) :\n location + (isMinus && series.type === 'Waterfall' ? (+rect.width - extraSpace - margin.left) : (+extraSpace + margin.left + this.markerHeight));\n }\n else {\n location = !this.inverted ? location + (isMinus && series.type === 'Waterfall' ? (-rect.height - extraSpace - margin.top) : (+extraSpace + margin.top + this.markerHeight)) :\n location + (isMinus && series.type === 'Waterfall' ? (+rect.width + extraSpace + margin.top) : (-extraSpace - margin.right - this.markerHeight));\n }\n break;\n }\n return location;\n };\n /**\n * Updates the label location\n */\n DataLabel.prototype.updateLabelLocation = function (position, location, extraSpace, margin, rect, top, inside) {\n if (inside === void 0) { inside = false; }\n if (!this.inverted) {\n if (top) {\n location = (position === 'Outer' && !inside) ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.top + this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location + rect.height + extraSpace + margin.top + this.markerHeight :\n location + rect.height - extraSpace - margin.bottom - this.markerHeight;\n }\n }\n else {\n if (top) {\n location = (position === 'Outer' && !inside) ? location + extraSpace + margin.left + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location - rect.width - extraSpace - margin.right - this.markerHeight :\n location - rect.width + extraSpace + margin.left + this.markerHeight;\n }\n }\n return location;\n };\n DataLabel.prototype.calculatePathActualPosition = function (y, markerSize, series, point, size, labelIndex) {\n var points = series.points;\n var index = point.index;\n var yValue = points[index].yValue;\n var position;\n var nextPoint = points.length - 1 > index ? points[index + 1] : null;\n var previousPoint = index > 0 ? points[index - 1] : null;\n var yLocation;\n var isOverLap = true;\n var labelRect;\n var isBottom;\n var positionIndex;\n var collection = this.chart.dataLabelCollections;\n if (series.type === 'Bubble') {\n position = 'Top';\n }\n else if (series.type.indexOf('Step') > -1) {\n position = 'Top';\n if (index) {\n position = (!previousPoint || !previousPoint.visible || (yValue > previousPoint.yValue !== this.yAxisInversed)\n || yValue === previousPoint.yValue) ? 'Top' : 'Bottom';\n }\n }\n else if (series.type === 'BoxAndWhisker') {\n if (labelIndex === 1 || labelIndex === 3 || labelIndex > 4) {\n position = series.yAxis.isAxisInverse ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isAxisInverse ? 'Top' : 'Bottom';\n }\n else {\n isOverLap = false;\n position = 'Middle';\n yLocation = this.calculatePathPosition(y, position, series, point, size, labelIndex);\n }\n }\n else {\n if (index === 0) {\n position = (!nextPoint || !nextPoint.visible || yValue > nextPoint.yValue ||\n (yValue < nextPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else if (index === points.length - 1) {\n position = (!previousPoint || !previousPoint.visible || yValue > previousPoint.yValue ||\n (yValue < previousPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else {\n if (!nextPoint.visible && !(previousPoint && previousPoint.visible)) {\n position = 'Top';\n }\n else if (!nextPoint.visible || !previousPoint) {\n position = (nextPoint.yValue > yValue || (previousPoint && previousPoint.yValue > yValue)) ?\n 'Bottom' : 'Top';\n }\n else {\n var slope = (nextPoint.yValue - previousPoint.yValue) / 2;\n var intersectY = (slope * index) + (nextPoint.yValue - (slope * (index + 1)));\n position = !this.yAxisInversed ? intersectY < yValue ? 'Top' : 'Bottom' :\n intersectY < yValue ? 'Bottom' : 'Top';\n }\n }\n }\n isBottom = position === 'Bottom';\n positionIndex = ['Outer', 'Top', 'Bottom', 'Middle', 'Auto'].indexOf(position);\n while (isOverLap && positionIndex < 4) {\n yLocation = this.calculatePathPosition(y, this.getPosition(positionIndex), series, point, size, labelIndex);\n labelRect = calculateRect(new ChartLocation(this.locationX, yLocation), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect)\n || (labelRect.y + labelRect.height) > series.clipRect.height;\n positionIndex = isBottom ? positionIndex - 1 : positionIndex + 1;\n isBottom = false;\n }\n return yLocation;\n };\n /**\n * Animates the data label.\n *\n * @param {Series} series - Data label of the series gets animated.\n * @returns {void}\n */\n DataLabel.prototype.doDataLabelAnimation = function (series, element) {\n var shapeElements = series.shapeElement.childNodes;\n var textNode = series.textElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var location;\n var length = element ? 1 : textNode.length;\n var tempElement;\n for (var i = 0; i < length; i++) {\n tempElement = textNode[i];\n if (element) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, duration, 'ZoomIn');\n }\n else {\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n if (shapeElements[i]) {\n tempElement = shapeElements[i];\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n }\n }\n }\n };\n DataLabel.prototype.getPosition = function (index) {\n return (['Outer', 'Top', 'Bottom', 'Middle', 'Auto'][index]);\n };\n /**\n * Get module name.\n */\n DataLabel.prototype.getModuleName = function () {\n // Returns the module name\n return 'DataLabel';\n };\n /**\n * To destroy the dataLabel for series.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.destroy = function () {\n // Destroy method performed here\n };\n return DataLabel;\n}());\nexport { DataLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable curly */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Chart legend\n */\nimport { remove, Browser, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { LegendOptions, BaseLegend } from '../../common/legend/legend';\nimport { textTrim, removeElement, RectOption, withInBounds, blazorTemplatesReset } from '../../common/utils/helper';\nimport { getUnicodeText } from '../../common/utils/helper';\nimport { measureText, Rect, getElement } from '@syncfusion/ej2-svg-base';\nimport { legendRender, legendClick, regSub, regSup } from '../../common/model/constants';\nimport { textWrap } from '../../common/utils/helper';\n/**\n * `Legend` module is used to render legend for the chart.\n */\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n */\n Legend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on('click', this.click, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n */\n Legend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module\n */\n Legend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n this.move(e);\n if (this.chart.highlightModule && (this.chart.highlightMode !== 'None' || this.chart.legendSettings.enableHighlight)) {\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_', this.legendID + '_g_'];\n var targetId = e.target.id;\n var index = void 0;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n index = parseInt(targetId.split(id)[1], 10);\n this.chart.highlightModule.legendSelection(this.chart, index, e.target, e.type);\n break;\n }\n }\n // this.click(e);\n }\n }\n };\n /**\n * To handle mosue end for legend module\n */\n Legend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Get the legend options.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (visibleSeriesCollection, chart) {\n this.legendCollections = [];\n var seriesType;\n var fill;\n var dashArray;\n var colors = [];\n this.isRtlEnable = chart.enableRtl;\n this.isReverse = !this.isRtlEnable && chart.legendSettings.reverse;\n if (visibleSeriesCollection.length > 1) {\n this.legend.mode = 'Series';\n }\n for (var _i = 0, visibleSeriesCollection_1 = visibleSeriesCollection; _i < visibleSeriesCollection_1.length; _i++) {\n var series = visibleSeriesCollection_1[_i];\n if (this.legend.mode === 'Series') {\n if (series.category !== 'Indicator') {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n dashArray = !series.marker.visible && (seriesType.indexOf('Line') > -1 && seriesType.indexOf('Area') === -1) ? series.dashArray : '';\n // To set legend color when use pointColorMapping\n fill = (series.pointColorMapping && series.points.length > 0) ?\n (series.points[0].interior ? series.points[0].interior : series.interior) : series.interior;\n this.legendCollections.push(new LegendOptions(series.name, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : series.visible), seriesType, series.legendImageUrl ? series.legendImageUrl : (series.type === 'Scatter' && series.marker.shape === 'Image' ?\n series.marker.imageUrl : ''), series.marker.shape, series.marker.visible, null, null, dashArray));\n }\n }\n else if (this.legend.mode === 'Point') {\n var _loop_1 = function (points) {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n if (this_1.legendCollections.filter(function (i) { return i.text === points.x.toString(); }).length === 0) {\n this_1.legendCollections.push(new LegendOptions(points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?\n this_1.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n };\n var this_1 = this;\n for (var _a = 0, _b = series.points; _a < _b.length; _a++) {\n var points = _b[_a];\n _loop_1(points);\n }\n }\n else if (this.legend.mode === 'Range') {\n for (var _c = 0, _d = series.points; _c < _d.length; _c++) {\n var points = _d[_c];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n var legendLabel = 'Others';\n if (colors.indexOf(fill) < 0) {\n colors.push(fill);\n if (chart.rangeColorSettings.length >= 1 && chart.rangeColorSettings[0].colors.length === 1) {\n for (var _e = 0, _f = chart.rangeColorSettings; _e < _f.length; _e++) {\n var rangeMap = _f[_e];\n if (rangeMap.colors[0] === fill) {\n legendLabel = rangeMap.label;\n }\n }\n this.legendCollections.push(new LegendOptions(legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n }\n }\n }\n else {\n if (this.legendCollections.length === 0 && chart.rangeColorSettings.length > 0) {\n var startLabel = chart.rangeColorSettings[0].start.toString();\n var endLabel = chart.rangeColorSettings[chart.rangeColorSettings.length - 1].end.toString();\n this.legendCollections.push(new LegendOptions(startLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n this.legendCollections.push(new LegendOptions(endLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n if (this.isReverse && chart.legendSettings.mode !== 'Gradient') {\n this.legendCollections.reverse();\n }\n };\n /** @private */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n this.chartRowCount = 1;\n this.rowHeights = [];\n this.columnHeights = [];\n this.pageHeights = [];\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\n var legendOption;\n var extraWidth = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = this.arrowHeight;\n var verticalArrowSpace = this.isVertical && !legend.enablePages ? arrowHeight : 0;\n var titleSpace = this.isTitle && titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleSpace = this.isTitle && this.isVertical && titlePosition !== 'Top' ? this.legendTitleSize.height + this.fivePixel : titleSpace;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.height += (extraHeight);\n legendBounds.width += extraWidth;\n var shapeWidth = legend.shapeWidth;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var rowWidth = 0;\n var legendWidth = 0;\n var columnHeight = 0;\n var columnCount = 0;\n var rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n var render = false;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle, this.chart.themeStyle.legendLabelFont).height, legend.shapeHeight);\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n if (regSub.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSub);\n }\n if (regSup.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSup);\n }\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n markerShape: legendOption.markerShape, name: legendRender, cancel: false\n };\n this.chart.trigger(legendRender, legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.markerShape = legendEventArgs.markerShape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n shapeWidth = legendOption.text ? legend.shapeWidth : 0;\n shapePadding = legendOption.text ? legend.shapePadding : 0;\n if (legendOption.render && legendOption.text) {\n render = true;\n legendWidth = shapeWidth + shapePadding + (legend.maximumLabelWidth ? legend.maximumLabelWidth : legendOption.textSize.width) + (!this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n rowWidth = rowWidth + legendWidth;\n if (!legend.enablePages && !this.isVertical) {\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n this.getLegendHeight(legendOption, legend, legendBounds, rowWidth, this.maxItemHeight, padding);\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace) || this.isVertical) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - (this.isVertical ? 0 : legendWidth)));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = this.isVertical ? 0 : legendWidth;\n rowCount++;\n columnCount = 0;\n columnHeight = verticalArrowSpace;\n //columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n var len = (rowCount > 0 ? (rowCount - 1) : 0);\n this.rowHeights[len] = Math.max((this.rowHeights[len] ? this.rowHeights[len] : 0), legendOption.textSize.height);\n // this.maxItemHeight = Math.max(this.maxItemHeight, legendOption.textSize.height);\n this.columnHeights[columnCount] = (this.columnHeights[columnCount] ? this.columnHeights[columnCount] : 0) + legendOption.textSize.height + (this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n columnCount++;\n }\n }\n columnHeight = Math.max.apply(null, this.columnHeights) + padding + titleSpace;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleSpace);\n this.isPaging = legendBounds.height < columnHeight;\n if (this.isPaging && !legend.enablePages) {\n if (this.isVertical) {\n // eslint-disable-next-line no-self-assign\n columnHeight = columnHeight;\n }\n else {\n columnHeight = (this.maxItemHeight + padding) + padding + (titlePosition === 'Top' ? titleSpace : 0);\n }\n }\n this.totalPages = rowCount;\n if (!this.isPaging && !this.isVertical) {\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n if (render) {\n this.setBounds(Math.max((rowWidth + padding), maximumWidth), columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /** @private */\n Legend.prototype.getLegendHeight = function (legendOption, legend, legendBounds, rowWidth, legendHeight, padding) {\n var legendWidth = legendOption.textSize.width;\n var textPadding = legend.shapePadding + (padding * 2) + legend.shapeWidth;\n switch (legend.textWrap) {\n case 'Wrap':\n case 'AnyWhere':\n if (legendWidth > legend.maximumLabelWidth || legendWidth + rowWidth > legendBounds.width) {\n legendOption.textCollection = textWrap(legendOption.text, (legend.maximumLabelWidth ? Math.min(legend.maximumLabelWidth, (legendBounds.width - textPadding)) : (legendBounds.width - textPadding)), legend.textStyle, this.chart.enableRtl, null, null, this.chart.themeStyle.legendLabelFont);\n }\n else {\n legendOption.textCollection.push(legendOption.text);\n }\n legendOption.textSize.height = (legendHeight * legendOption.textCollection.length);\n break;\n }\n };\n /** @private */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend, rowCount) {\n var padding = this.legend.padding;\n var textWidth = textPadding + (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth : prevLegend.textSize.width);\n var previousBound = prevLegend.location.x + ((!this.isRtlEnable) ? textWidth : -textWidth);\n if (this.isWithinBounds(previousBound, (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth : legendOption.textSize.width) + textPadding - this.itemPadding, rect) || this.isVertical) {\n legendOption.location.x = start.x;\n if (count !== firstLegend)\n this.chartRowCount++;\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + (this.isVertical ? prevLegend.textSize.height : this.rowHeights[(this.chartRowCount - 2)]) + (this.isVertical ? this.itemPadding : padding);\n }\n else {\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n legendOption.location.y = prevLegend.location.y;\n }\n var availwidth = (!this.isRtlEnable) ? (this.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.itemPadding - this.legend.shapeWidth / 2) : (legendOption.location.x - textPadding + this.itemPadding + (this.legend.shapeWidth / 2)) - this.legendBounds.x;\n if (!this.isVertical && this.isPaging && !this.legend.enablePages) {\n availwidth = this.legendBounds.width - legendOption.location.x - this.fivePixel;\n }\n availwidth = this.legend.maximumLabelWidth ? Math.min(this.legend.maximumLabelWidth, availwidth) : availwidth;\n if (this.legend.textOverflow === 'Ellipsis' && this.legend.textWrap === 'Normal') {\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle, this.chart.enableRtl, this.chart.themeStyle.legendLabelFont);\n }\n };\n Legend.prototype.isWithinBounds = function (previousBound, textWidth, rect) {\n if (!this.isRtlEnable) {\n return (previousBound + textWidth) > (rect.x + rect.width + (this.legend.shapeWidth / 2));\n }\n else {\n return (previousBound - textWidth) < (rect.x - (this.legend.shapeWidth / 2));\n }\n };\n /** @private */\n Legend.prototype.LegendClick = function (index, event) {\n var chart = this.chart;\n var seriesIndex = chart.legendSettings.mode === 'Series' ? index : 0;\n var legendIndex = !this.isReverse ? index : (this.legendCollections.length - 1) - index;\n var series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[legendIndex];\n var changeDetection = 'isProtectedOnChange';\n if (chart.legendSettings.mode === 'Series') {\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: series.points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n series.legendShape = legendClickArgs.legendShape;\n if (!legendClickArgs.cancel) {\n if (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n series.chart[changeDetection] = true;\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].visible && chart.series[series.sourceIndex].visible) {\n chart.series[series.sourceIndex].trendlines[series.index].visible = true;\n }\n else {\n chart.series[series.sourceIndex].trendlines[series.index].visible = false;\n }\n }\n else {\n this.changeSeriesVisiblity(series, series.visible);\n }\n legend.visible = series.category === 'TrendLine' ? chart.series[series.sourceIndex].trendlines[series.index].visible :\n (series.visible);\n this.refreshLegendToggle(chart, series);\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event.target, event.type);\n }\n else if (chart.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event.target, event.type);\n }\n series.chart[changeDetection] = false;\n }\n }\n else if (chart.legendSettings.mode === 'Point') {\n var point = series.points[index];\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: [point], name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n point.visible = !point.visible;\n var legendOption = this.legendCollections[index];\n legendOption.visible = point.visible;\n this.refreshLegendToggle(chart, series);\n }\n }\n else if (chart.legendSettings.mode === 'Range') {\n var points = [];\n var legendOption = this.legendCollections[index];\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (legendOption.fill === (point.interior || series.interior)) {\n points.push(point);\n }\n }\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n legendOption.visible = !legendOption.visible;\n for (var _b = 0, points_1 = points; _b < points_1.length; _b++) {\n var point = points_1[_b];\n point.visible = !point.visible;\n }\n this.refreshLegendToggle(chart, series);\n }\n }\n };\n Legend.prototype.refreshLegendToggle = function (chart, series) {\n var selectedDataIndexes = [];\n if (chart.selectionModule) {\n selectedDataIndexes = extend([], chart.selectionModule.selectedDataIndexes, null, true);\n }\n if ((chart.svgObject.childNodes.length > 0) && !chart.enableAnimation && !chart.enableCanvas) {\n while (chart.svgObject.lastChild) {\n chart.svgObject.removeChild(chart.svgObject.lastChild);\n }\n remove(chart.svgObject);\n }\n chart.animateSeries = false;\n chart.redraw = chart.enableAnimation;\n chart.rotatedDataLabelCollections = [];\n removeElement(getElement(chart.element.id + '_Secondary_Element').querySelectorAll('.ejSVGTooltip')[0]);\n blazorTemplatesReset(chart);\n this.redrawSeriesElements(series, chart);\n chart.removeSvg();\n chart.refreshAxis();\n series.refreshAxisLabel();\n this.refreshSeries(chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series_1 = _a[_i];\n if (!isNullOrUndefined(series_1)) {\n chart.markerRender.removeHighlightedMarker(series_1, null, true);\n }\n }\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart });\n if (selectedDataIndexes.length > 0) {\n chart.selectionModule.selectedDataIndexes = selectedDataIndexes;\n chart.selectionModule.redrawSelection(chart, chart.selectionMode);\n }\n if (chart.highlightModule && chart.highlightMode !== 'None' || chart.legendSettings.enableHighlight) {\n chart.highlightModule.redrawSelection(chart, chart.highlightMode);\n }\n chart.redraw = false;\n };\n Legend.prototype.changeSeriesVisiblity = function (series, visibility) {\n series.visible = !visibility;\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis) || (series.category == 'Pareto' && series.type == 'Line')) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n if (series.trendlines.length && series.visible) {\n series.trendlines.forEach(function (trendline) {\n trendline.visible = true;\n });\n }\n };\n Legend.prototype.isSecondaryAxis = function (axis) {\n return (this.chart.axes.indexOf(axis) > -1);\n };\n Legend.prototype.redrawSeriesElements = function (series, chart) {\n if (!chart.redraw) {\n return null;\n }\n removeElement(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) +\n '_DataLabelCollections');\n };\n Legend.prototype.refreshSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Spline') > -1) {\n var isArea = (series.type.indexOf('Area') > -1 || series.drawType.indexOf('Area') > -1);\n var isRange = series.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(series);\n }\n series.position = undefined;\n }\n };\n /**\n * To show the tooltip for the trimmed text in legend.\n *\n * @returns {void}\n */\n Legend.prototype.click = function (event) {\n var _this = this;\n if (!this.chart.legendSettings.visible) {\n return;\n }\n var pageX = this.chart.mouseX;\n var pageY = this.chart.mouseY;\n var legendRegion = [];\n var targetId = event.target.id.indexOf('_chart_legend_g_') > -1 ?\n event.target.firstChild['id'] : event.target.id;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\n for (var _i = 0, legendItemsId_2 = legendItemsId; _i < legendItemsId_2.length; _i++) {\n var id = legendItemsId_2[_i];\n if (targetId.indexOf(id) > -1) {\n seriesIndex = parseInt(targetId.split(id)[1], 10);\n this.LegendClick(seriesIndex, event);\n break;\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n if (this.chart.enableCanvas && this.pagingRegions.length) {\n this.checkWithinBounds(pageX, pageY);\n }\n legendRegion = this.legendRegions.filter(function (region) {\n return (withInBounds(pageX, (pageY + (_this.isPaging ? (_this.currentPageNumber - 1) * _this.translatePage(_this.chart.enableCanvas, null, 1, 2) : 0)), region.rect));\n });\n if (legendRegion.length && this.chart.enableCanvas) {\n this.LegendClick(legendRegion[0].index, event);\n }\n };\n /**\n * To check click position is within legend bounds\n */\n Legend.prototype.checkWithinBounds = function (pageX, pageY) {\n var cRender = this.chart.renderer;\n var bounds = this.legendBounds;\n var borderWidth = this.chart.legendSettings.border.width;\n var canvasRect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n canvasRect.x = canvasRect.x - borderWidth / 2;\n canvasRect.y = canvasRect.y - borderWidth / 2;\n canvasRect.width = canvasRect.width + borderWidth;\n canvasRect.height = canvasRect.height + borderWidth;\n if (withInBounds(pageX, pageY, this.pagingRegions[0])) {\n // pageDown calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n return null;\n }\n };\n Legend.prototype.canvasPageDown = function (cRender, canvasRect, bounds) {\n if (--this.currentPageNumber > 0) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transparent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n ++this.currentPageNumber;\n }\n };\n Legend.prototype.canvasPageUp = function (cRender, canvasRect, bounds) {\n if (++this.currentPageNumber > 0 && this.currentPageNumber <= this.totalNoOfPages) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transpaent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n --this.currentPageNumber;\n }\n };\n /**\n * Get module name\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Legend;\n}(BaseLegend));\nexport { Legend };\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === '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 xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\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: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\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 xPseudo;\n\n})));\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HypotheticalTradeReportTemplate.vue?vue&type=style&index=0&id=6e1f1710&prod&lang=css\"","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === '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 se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\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 se;\n\n})));\n"],"sourceRoot":""}