{"version":3,"sources":["webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./src/components/param/Products.vue?ee79","webpack:///./src/components/reports/RequestForBroker.vue?fb2f","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/datetimepicker/datetimepicker.component.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/textbox/textbox.component.js","webpack:///./src/components/param/InsuranceLinesForm.vue?9f02","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/datepicker/datepicker.component.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","webpack:///./node_modules/@syncfusion/ej2-vue-dropdowns/src/multi-select/multiselect.component.js","webpack:///./src/components/statistics/Chart.vue?0a72","webpack:///./src/components/param/Notifications.vue?db64","webpack:///src/components/param/NotificationsForm.vue","webpack:///./src/components/param/NotificationsForm.vue?692b","webpack:///./src/components/param/NotificationsForm.vue?aaef","webpack:///./src/components/param/NotificationsForm.vue?ed7d","webpack:///src/components/param/Notifications.vue","webpack:///./src/components/param/Notifications.vue?8ac2","webpack:///./src/components/param/Notifications.vue?0b67","webpack:///./src/components/insuranceRequest/ReassignedForm.vue?b07c","webpack:///./src/components/param/NotificationsForm.vue?3b2f","webpack:///./src/components/param/UsersProcessLinesForm.vue?6777","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./src/components/insuranceRequest/ChatRequest.vue?e296","webpack:///./src/components/insuranceRequest/ReassignedBrokerForm.vue?32fd","webpack:///./src/components/insuranceRequest/FileComponent.vue?8adb","webpack:///./node_modules/@syncfusion/ej2-navigations/src/tab/tab.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:///./src/components/param/MacroLinesForm.vue?a9e5","webpack:///./src/components/reports/RequestForAnalyst.vue?f096","webpack:///./src/components/insuranceRequest/RequestForm.vue?4061","webpack:///./src/components/insuranceRequest/Renovation.vue?72e0","webpack:///./src/components/param/MacroLines.vue?62c6","webpack:///./src/components/param/MacroLinesForm.vue?79dc","webpack:///src/components/param/MacroLinesForm.vue","webpack:///./src/components/param/MacroLinesForm.vue?7471","webpack:///./src/components/param/MacroLinesForm.vue?5ced","webpack:///src/components/param/MacroLines.vue","webpack:///./src/components/param/MacroLines.vue?203e","webpack:///./src/components/param/MacroLines.vue?2a5a","webpack:///./src/components/statistics/StatisticList.vue?3825","webpack:///./src/components/statistics/Chart.vue?e4a8","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/util.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/observer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/ajax.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/browser.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/template.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/virtual-dom.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/dom.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/animation.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/component.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/child-property.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/draggable.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/droppable.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/l10n.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/touch.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-vue-base/src/component-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-vue-base/src/component-decorator.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-vue-base/src/template.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/model/base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-data/src/query.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-data/src/manager.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-data/src/util.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/model/data.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/utils/export.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/chart.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/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/bar-series.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/stacking-column-series.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/axis/date-time-axis.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/zooming-toolkit.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/zooming.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/scrollbar/scrollbar-elements.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/common/scrollbar/scrollbar.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/line-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/chart/series/line-series.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/model/acc-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/accumulation-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-series.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/accumulation.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/accumulation-chart/series.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/accumulation-chart/annotations.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/accumulation-chart/accumulationchart.component.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/legend.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/dataLabel.js","webpack:///src/components/statistics/Chart.vue","webpack:///./src/components/statistics/Chart.vue?fb03","webpack:///./src/components/statistics/Chart.vue?72d7","webpack:///src/components/statistics/StatisticList.vue","webpack:///./src/components/statistics/StatisticList.vue?929a","webpack:///./src/components/statistics/StatisticList.vue?e9b9","webpack:///./src/components/param/InsuranceLines.vue?b7ba","webpack:///./src/components/param/InsuranceLines.vue?6b5b","webpack:///./src/components/param/InsuranceLinesForm.vue?151c","webpack:///src/components/param/InsuranceLinesForm.vue","webpack:///./src/components/param/InsuranceLinesForm.vue?1f64","webpack:///./src/components/param/InsuranceLinesForm.vue?f9f7","webpack:///src/components/param/InsuranceLines.vue","webpack:///./src/components/param/InsuranceLines.vue?36a9","webpack:///./src/components/param/InsuranceLines.vue?4f77","webpack:///./src/components/reports/RequestForAnalyst.vue?32da","webpack:///src/components/reports/RequestForAnalyst.vue","webpack:///./src/components/reports/RequestForAnalyst.vue?509c","webpack:///./src/components/reports/RequestForAnalyst.vue?6beb","webpack:///./src/components/reports/RequestForBroker.vue?e7a6","webpack:///src/components/reports/RequestForBroker.vue","webpack:///./src/components/reports/RequestForBroker.vue?9a31","webpack:///./src/components/reports/RequestForBroker.vue?bc9e","webpack:///./src/components/insuranceRequest/SearchPerson.vue?84b2","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","webpack:///./src/components/persons/PersonsForm.vue?fb7c","webpack:///src/components/persons/PersonsForm.vue","webpack:///./src/components/persons/PersonsForm.vue?4506","webpack:///./src/components/persons/PersonsForm.vue?fd95","webpack:///./src/components/persons/PersonsForm.vue?f4ad","webpack:///./src/components/param/MacroLines.vue?5baa","webpack:///./src/components/param/Notifications.vue?4ba4","webpack:///./node_modules/downloadjs/download.js","webpack:///./src/components/param/ProductsForm.vue?2feb","webpack:///./src/components/insuranceRequest/AdditionalForm.vue?8cab","webpack:///./src/components/param/UsersProcessLines.vue?c1f7","webpack:///./src/components/reports/ReportList.vue?759e","webpack:///./src/components/insuranceRequest/RequestList.vue?e3d9","webpack:///./src/components/insuranceRequest/RequestList.vue?3779","webpack:///./src/components/insuranceRequest/RequestForm.vue?c701","webpack:///./src/components/insuranceRequest/SearchPerson.vue?2624","webpack:///src/components/insuranceRequest/SearchPerson.vue","webpack:///./src/components/insuranceRequest/SearchPerson.vue?1e8c","webpack:///./src/components/insuranceRequest/SearchPerson.vue?07f4","webpack:///./src/components/insuranceRequest/ChatRequest.vue?003f","webpack:///src/components/insuranceRequest/ChatRequest.vue","webpack:///./src/components/insuranceRequest/ChatRequest.vue?8e30","webpack:///./src/components/insuranceRequest/ChatRequest.vue?de8c","webpack:///./src/components/insuranceRequest/FileComponent.vue?223e","webpack:///src/components/insuranceRequest/FileComponent.vue","webpack:///./src/components/insuranceRequest/FileComponent.vue?1eac","webpack:///./src/components/insuranceRequest/FileComponent.vue?3fc4","webpack:///src/components/insuranceRequest/RequestForm.vue","webpack:///./src/components/insuranceRequest/RequestForm.vue?fb8c","webpack:///./src/components/insuranceRequest/RequestForm.vue?e1b3","webpack:///./src/components/insuranceRequest/RequestConsult.vue?532a","webpack:///./src/components/insuranceRequest/ProcessForm.vue?9167","webpack:///src/components/insuranceRequest/ProcessForm.vue","webpack:///./src/components/insuranceRequest/ProcessForm.vue?10cf","webpack:///./src/components/insuranceRequest/ProcessForm.vue?add1","webpack:///./src/components/insuranceRequest/AdditionalForm.vue?7d13","webpack:///src/components/insuranceRequest/AdditionalForm.vue","webpack:///./src/components/insuranceRequest/AdditionalForm.vue?b962","webpack:///./src/components/insuranceRequest/AdditionalForm.vue?f7d4","webpack:///./src/components/insuranceRequest/ReassignedForm.vue?9b50","webpack:///src/components/insuranceRequest/ReassignedForm.vue","webpack:///./src/components/insuranceRequest/ReassignedForm.vue?a7c6","webpack:///./src/components/insuranceRequest/ReassignedForm.vue?f36b","webpack:///./src/components/insuranceRequest/ReassignedBrokerForm.vue?85e8","webpack:///src/components/insuranceRequest/ReassignedBrokerForm.vue","webpack:///./src/components/insuranceRequest/ReassignedBrokerForm.vue?06e5","webpack:///./src/components/insuranceRequest/ReassignedBrokerForm.vue?ce31","webpack:///src/components/insuranceRequest/RequestConsult.vue","webpack:///./src/components/insuranceRequest/RequestConsult.vue?df9b","webpack:///./src/components/insuranceRequest/RequestConsult.vue?cd25","webpack:///src/components/insuranceRequest/RequestList.vue","webpack:///./src/components/insuranceRequest/RequestList.vue?484d","webpack:///./src/components/insuranceRequest/RequestList.vue?60ce","webpack:///./src/components/reports/ReportList.vue?a46a","webpack:///src/components/reports/ReportList.vue","webpack:///./src/components/reports/ReportList.vue?e93a","webpack:///./src/components/reports/ReportList.vue?ba08","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:///./src/components/param/Products.vue?cb5b","webpack:///./src/components/param/ProductsForm.vue?70cc","webpack:///src/components/param/ProductsForm.vue","webpack:///./src/components/param/ProductsForm.vue?fb6d","webpack:///./src/components/param/ProductsForm.vue?5d51","webpack:///src/components/param/Products.vue","webpack:///./src/components/param/Products.vue?6938","webpack:///./src/components/param/Products.vue?4552","webpack:///./src/components/insuranceRequest/RequestConsult.vue?1369","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","webpack:///./src/components/statistics/StatisticList.vue?8931","webpack:///./src/components/insuranceRequest/Renovation.vue?f32f","webpack:///src/components/insuranceRequest/Renovation.vue","webpack:///./src/components/insuranceRequest/Renovation.vue?910a","webpack:///./src/components/insuranceRequest/Renovation.vue?992c","webpack:///./src/components/param/UsersProcessLines.vue?b28b","webpack:///./src/components/param/UsersProcessLinesForm.vue?59e5","webpack:///src/components/param/UsersProcessLinesForm.vue","webpack:///./src/components/param/UsersProcessLinesForm.vue?c5ae","webpack:///./src/components/param/UsersProcessLinesForm.vue?127e","webpack:///src/components/param/UsersProcessLines.vue","webpack:///./src/components/param/UsersProcessLines.vue?0385","webpack:///./src/components/param/UsersProcessLines.vue?1417","webpack:///./src/components/insuranceRequest/ProcessForm.vue?6d56"],"names":["toObject","floor","Math","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","module","exports","matched","str","position","captures","namedCaptures","replacement","tailPos","length","m","symbols","undefined","call","match","ch","capture","charAt","slice","n","f","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","properties","modelProps","DateTimePickerComponent","_super","_this","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","ej2Instances","_trigger","trigger","bindProperties","_setProperties","setProperties","prop","muteOnChange","keys","map","model","test","$emit","eventName","eventProp","successHandler","requestType","toString","propKey","render","createElement","$slots","default","addDate","dates","createContent","currentView","focusIn","focusOut","hide","e","navigateTo","view","date","removeDate","requiredModules","show","type","toggle","props","event","DateTimePickerPlugin","name","install","Vue","component","TextBoxComponent","addAttributes","attributes","addIcon","icons","removeAttributes","TextBoxPlugin","DatePickerComponent","triggerEvent","DatePickerPlugin","FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","element","inputElement","value","floatLabelType","placeholder","floatLinelement","floatLabelElement","className","id","innerText","sanitize","removeAttribute","appendChild","classList","add","updateFloatLabelState","contains","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","remove","floatLabelFocus","floatLabelBlur","FOCUS","DISABLED","OVER_ALL_WRAPPER","ELEMENT_WRAPPER","ELEMENT_MOBILE_WRAPPER","HIDE_LIST","DELIMITER_VIEW","CHIP_WRAPPER","CHIP","CHIP_CONTENT","CHIP_CLOSE","CHIP_SELECTED","SEARCHBOX_WRAPPER","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","REMAIN_WRAPPER","CLOSEICON_CLASS","DELIMITER_WRAPPER","POPUP_WRAPPER","INPUT_ELEMENT","RTL_CLASS","CLOSE_ICON_HIDE","MOBILE_CHIP","FOOTER","HEADER","DISABLE_ICON","SPINNER_CLASS","HIDDEN_ELEMENT","destroy","dropdownIcon","iconAnimation","TOTAL_COUNT_WRAPPER","BOX_ELEMENT","FILTERPARENT","CUSTOM_WIDTH","MultiSelect","option","clearIconWidth","isValidKey","selectAllEventData","selectAllEventEle","isDynamicDataChange","scrollFocusStatus","keyDownStatus","enableRTL","state","popupObj","enableRtl","dataBind","modules","mode","isGroupChecking","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","allowCustomValue","hideSelectedItem","closePopupOnSelect","push","member","args","updateHTMLAttribute","htmlAttributes","_i","_a","htmlAttr","updatedClassValue","trim","split","popupWrapper","enable","setAttribute","refreshPlaceHolder","defaultAttr","validateAttr","containerAttr","indexOf","hiddenElement","updateReadonly","updateClearButton","overAllClear","parentNode","style","display","updateCssClass","cssClass","updatedCssClassValues","updateOldPropCssClass","oldClass","onPopupShown","isDevice","allowFiltering","proxy_1","window","onpopstate","hidePopup","focus","history","pushState","animModel","duration","eventArgs","popup","cancel","animation","focusAtFirstListItem","document","body","fields","groupBy","updateListItems","list","querySelectorAll","mainList","showDropDownIcon","refreshPopup","renderReactTemplates","zIndex","isFirstClick","loadTemplate","listItems","mainListItems","findGroupStart","deselectHeader","itemTemplate","isServerRendered","mainData","setTimeout","refreshListItems","removeFocus","notify","setScrollPosition","valueEle","findListElement","ulElement","scrollBottom","li","addListFocus","focusAtLastListItem","data","activeElement","liCollections","ignoreCase","item","index","getAriaAttributes","ariaAttributes","updateListARIA","disableStatus","ensureAriaDisabled","status","attr","removelastSelection","elements","chipCollectionWrapper","getAttribute","tempValues","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","listData","refreshSelection","checkPlaceholderSize","onActionFailure","renderPopup","targetElement","targetInputElement","getForQuery","valuecheck","predicate","field","text","or","getQuery","query","where","onActionComplete","isUpdated","updateSelectElementData","proxy","items","k","itemsData","getDataByValue","checkEle","splice","updateActionList","updateVal","addValidInputClass","dataSource","showSelectAll","cloneNode","mainListCollection","remoteCustomValue","inputFocus","checkForCustomValue","tempQuery","unwireListEvents","wireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","beforePopupOpen","selected","previousSibling","previousElementSibling","group","nextElementSibling","hideGroupItem","listEle","parentElement","l10nUpdate","noData","ariaValue","firstElementChild","checkSelectAll","checkMaxSelection","element1","j","temp","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","isPopupOpen","showPopup","KeyUp","char","String","fromCharCode","keyCode","isWordCharacter","ctrlKey","expandTextbox","showOverAllClear","search","filter","isFiltered","remoteFilterAction","dataUpdater","filterQuery","clone","filterAction","dataType","typeOfData","typeof","filterType","ignoreAccent","isDataFetched","backCommand","resetList","dataChecks","getValueByText","customData","dataItem","tempData","JSON","parse","stringify","getNgDirective","wrapperClick","enabled","readonly","preventDefault","onBlur","eve","isDocClickFromCheck","relatedTarget","isIE","updateDelimView","dispatchEvent","DropDownBaseresetBlazorTemplates","focused","removeChipFocus","refreshInputHight","downIconWidth","dropIcon","offsetWidth","parseInt","getComputedStyle","marginRight","setPlaceholderSize","width","validateValues","newValue","oldValue","sort","newVal","oldVal","initStatus","isInteracted","isAngular","preventChange","updateTempValue","getPagingCount","height","getItems","getPropertyValue","round","offsetHeight","pageUpSelection","steps","previousItem","collection","getIndexByValue","pageDownSelection","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","refreshPosition","resolveCollision","checkTextLength","popupKeyActions","updateAriaAttribute","focusedItem","homeNavigation","isHome","scrollEle","onKeyDown","altKey","activeIndex","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","keyAction","focuseElem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","selectedLI","currentOffset","nextBottom","offsetTop","scrollTop","nextOffset","boxRange","fixedHeaderElement","limit","isValidLI","updateListSelection","lastElementChild","textContent","selectAllItem","selectedElem","addChipSelection","moveByTop","updateCheck","checkElement","chipClick","elem","onChipRemove","which","button","customVal","getFormattedValue","setFloatLabelType","isClearAll","targetEle","element_1","val_1","itemData","removeIndex","removeVal","removedValues","concat","hideElement","isSelectAll","updateMainList","removeChip","updateChipStatus","targetEle_1","currentTarget","isChecked","clearAllCallback","updatedataValueItems","element2","setWidth","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","checkTemplate","exception","compiledString","chip","attrs","chipContent","valueTemplate","innerHTML","valueCompTemp","valueTemplateId","isStringTemplate","DropDownBaseupdateBlazorTemplates","enableHtmlSanitizer","setClass","classes","isPreventChange","showClearButton","popupWidth","inputWidth","parseFloat","mouseIn","mouseOut","listOption","iconCss","fieldProperty","listCurrentOptions","showIcon","groupItemRole","checkboxFilter","filterParent","overAllHeight","popupHeight","visibility","headerTemplate","setHeaderTemplate","header","footerTemplate","setFooterTemplate","footer","selectAllHeight","popupElement","searchBoxHeight","maxHeight","targetType","X","Y","relateTo","collision","offsetY","close","unwireScrollEvents","open","wireScrollEvents","targetExitViewport","headercheck","headerTemplateId","onListMouseDown","footercheck","footerTemplateId","ClearAll","liElement","selectAllItems","windowResize","resetValueHandler","formElement","textVal","tagName","wireEvent","onInput","pasteHandler","info","eventArgs_1","preventDefaultAction","updateData","preRender","initializeData","updateDataAttribute","getLocaleName","initial","delim","listValue","getTextByValue","updateWrapperText","textArr","val","renderList","isEmptyData","noRecordsTemplate","childElementCount","removeListSelection","indexItem","noDataEle","addItem","replaceChild","updateActionCompleteData","updateAddItemList","itemCount","updateDataList","disabled","removeHover","temp_1","fieldValue","isNaN","data_1","newData","selectedItems","selectItems","hoveredItem","hover","mainlist","addListHover","ariaCheck","delimChar","onMouseClick","headerLi","count","liChecked","liUnchecked","groupValues","getElementsByClassName","findGroupAttrtibutes","updateCheckBox","listElement","checked","unChecked","groupHeader","checkBoxElement","onMouseOver","currentLi","onMouseLeave","onDocumentClick","blur","showSpinner","spinnerElement","hideSpinner","wrapperType","wrapperData","tempIndex","wrapperleng","remaining","overAllContainer","l10nLocale","actionFailureTemplate","overflowCountTemplate","totalCountTemplate","l10n","locale","getConstant","remainContent","raminElement","totalCompiledString","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","paddingRight","paddingLeft","pop","join","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","firstChild","nodeType","nodeValue","removeChild","remainTemp","totalTemp","newTemp","unWireEvent","selectionLimit","focusedElement","textboxValueUpdate","updateValue","index_1","count_1","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","setZIndex","updateDataSource","onLoadSelect","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","getModuleName","setUpdateInitial","filterBarPlaceholder","dropDownIcon","reInitializePoup","msProps","getPropObject","newProperty","oldProperty","itemIndex","delay","mainLiLength","liLength","selectAll","clear","styles","spellcheck","autocomplete","tabindex","insertBefore","opacity","validationAttribute","checkInitialValue","hasAttribute","renderComplete","isData","options","optionsElement","valueCol","textCol","optionsLen","opt","checkAutoFocus","isReact","clearTemplate","MultiSelectComponent","MultiSelectPlugin","_vm","_h","$createElement","_c","_self","staticClass","staticStyle","dlgShow","formAction","isMobile","rowData","on","hideForm","_m","ref","onGridLoad","toolbar_click","onActionBegin","toolbar","gridData","selectionSettings","pageSettings","editSettings","filterSettings","setStyle","commands","staticRenderFns","_v","showing","onDialogClose","onDialogOpen","beforeDialogOpen","directives","rawName","expression","class","hasError","m_data","domProps","$event","validateField","composing","$set","isFormReadOnly","_s","m_errors","isActive","canDelete","callback","$$v","tabSelecting","message","gridDataSource","gridToolbar","grid_ActionBegin","grid_ActionComplete","grid_toolbarClick","stateParams","subStateParams","notificationStates","disableButtons","nativeOn","validateForm","_e","validateDelete","mixins","PermissionMixin","computed","showId","showSaveButton","showDeleteButton","customClass","ret","hasPermission","hasData","currentRows","showActionButtons","isInGridEdition","requestStates","states","requestSubStates","isSaving","instance","isValid","isMounted","validationSchema","isModal","getElementById","allowEditing","allowAdding","allowDeleting","stateElem","read","stateCombo","write","change","substateCombo","appendTo","subStateElem","provide","grid","created","mounted","$refs","formDialog","$el","buildYupSchema","console","log","error","methods","isSwiped","enableGridToolbar","clearErrors","$store","dispatch","getAlertDialog","title","zindex","content","showCloseIcon","closeOnEscape","animationSettings","dialog","isNew","getStateName","find","description","getSubStateName","el","deleteTempState","validateRecord","action","showToast","saveTempState","mapDataToLocalData","findNotificationStateIndex","notificationId","findNotificationStateById","$delete","removed","isTheSame","str1","str2","len","igualito","column","cell","requestStateId","Boolean","required","Number","formData","COL_ID","COL_NAME","COL_IS_ACTIVE","COL_ACTIVE","COL_BUTTONS","components","updated","gridObj","notificationsList","getters","salida","forEach","active","deleteDialog","toolTip","editparams","showDeleteConfirmDialog","allowEditOnDblClick","allowSorting","immediatemodedelay","columns","isMobileDevice","col","operator","editBtnClick","exportTool_click","fileName","fName","includeHiddenColumn","excelExport","exportProps","addTool_click","showForm","viewTool_click","getRowDataFromToolbar","getRowData","hasRowData","editTool_click","deleteTool_click","getDeleteConfirmation","okButton","click","InactivateRow","isPrimary","cancelButton","row","rows","getSelectedRows","dlg","rowObj","DESCRIPTORS","global","isForced","inheritIfRequired","getOwnPropertyNames","isRegExp","getFlags","stickyHelpers","redefine","fails","enforceInternalState","enforce","setSpecies","wellKnownSymbol","MATCH","NativeRegExp","RegExp","RegExpPrototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","FORCED","RegExpWrapper","pattern","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","source","result","configurable","get","set","it","fixRegExpWellKnownSymbolLogic","anObject","toLength","toInteger","requireObjectCoercible","advanceStringIndex","getSubstitution","regExpExec","max","min","maybeToString","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","O","replacer","regexp","res","done","rx","S","functionalReplace","fullUnicode","unicode","lastIndex","results","matchStr","accumulatedResult","nextSourcePosition","groups","replacerArgs","apply","CLS_TAB","CLS_HEADER","CLS_BLA_TEM","CLS_CONTENT","CLS_NEST","CLS_ITEMS","CLS_ITEM","CLS_TEMPLATE","CLS_RTL","CLS_ACTIVE","CLS_DISABLE","CLS_HIDDEN","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_OVERLAY","CLS_HSCRCNT","CLS_VSCRCNT","CLS_VTAB","CLS_VERTICAL","CLS_VLEFT","CLS_VRIGHT","CLS_HBOTTOM","CLS_FILL","TabActionSettings","TabAnimationSettings","effect","easing","Header","TabItem","Tab","isAdd","isIconAlone","resizeContext","refreshActElePosition","bind","keyConfigs","tab","home","end","enter","space","delete","moveLeft","moveRight","moveUp","moveDown","tbObj","unWireEvents","expTemplateContent","isTemplate","cntEle","cnt","refresh","loadOn","setActiveBorder","nested","prevIndex","isNested","isPopup","initRender","isSwipeed","itemIndexArray","templateEle","css","setCssClass","role","updatePopAnimationConfig","btnCls","tabId","renderContainer","wireEvents","ele","children","setOrientation","headerPlacement","renderHeader","tbItems","selector","renderContent","scrCnt","bdrLine","scrCntClass","setContentHeight","select","selectedItem","setRTL","serverItemsChanged","enableAnimation","setActive","itemCollection","content_1","triggerAnimation","headerReady","hdrEle","getTabHeader","ej2_instances","clicked","clickHandler","scrollCnt","touchModule","swipe","swipeHandler","setActiveContent","getTrgContent","extIndex","hdrPlace","tabItems","addVerticalClass","hdrItems","tabItems_1","txt","outerHTML","cont","wrap","tabIndex","parseObject","overflowMode","scrollStep","updateOrientationAttribute","setCloseButton","showCloseButton","hdrItem","contents","reRenderItems","txtWrapEle","tbCount","tItems","spliceArray","pos","iconPosition","hidden","visible","tEle","tHtml","txtEmpty","headerTextCompile","icon","tCont","wrapAttrs","attrObj","tItem","template","spliceItemIndex","removeActiveClass","tabHeader","node","checkPopupOverflow","tbPop","popIcon","tbrItems","lastChild","isOverflow","isVertical","offsetLeft","popupHandler","ripEle","tbItem","actEleId","prevEle","trg","refreshOverflow","prevCtnAnimation","prev","current","previous","timingFunction","next","triggerPrevAnimation","oldCnt","animateObj","begin","childNodes","animate","newCnt","prevActiveEle","idNo","openEff","clsEff","progress","keyPressed","trgParent","trgIndex","getEleIndex","popEle","popObj","headers","eleStr","templateCompile","tempEle","compileElement","templateFn","templateFUN","getContent","callType","eleVal","no","findEle","tbPos","changeOrientation","place","changeToolbarOrientation","focusItem","curActItem","serverChangeOrientation","headerPos","contentPos","cls","heightAdjustMode","getHeight","removeProperty","cs","bar","trgHdrEle","root","tbHeight","tbWidth","skipDataBind","allowServerDataBinding","serverDataBind","trg_1","eleTrg","refreshItemVisibility","eventArg","prevItem","previousIndex","selectedIndex","selectedContent","selectingID","contentReady","setItems","isReplace","refreshActiveBorder","config","tbPopObj","addEventListener","hoverHandler","spaceKeyDown","keyModule","keyHandler","tabKeyModule","openPopup","shiftTab","removeEventListener","originalEvent","removeTab","velocity","changedTouches","stopPropagation","swipeDirection","clstHead","actEle","nxtSib","nextSibling","activeEle","scrBar","scrStart","scrollLeft","scrEnd","eleStart","eleWidth","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","isRect","selectElement","changedProp","property","cntItem","arr","isHiddenEle","addTab","hideTab","strVal","enableTab","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","itemsCount","textValue_1","i_1","addItems","removeArgs","removedItem","removedIndex","tabRemovingArgs","removeItems","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","disable","refreshActiveTab","num","substring","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","TabItemsDirective","TabItemsPlugin","TabItemDirective","TabItemPlugin","TabComponent","TabPlugin","isVisible","localCode","assign","COL_CODE","macroLinesList","dateFormat","m_filter","yearsList","radicationYear","requestTypesList","complexityList","zonesList","branchOfficesList","insuranceLinesList","brokersList","agentsList","analysts","searchData","configGraphTec1","columnsGraphTec1","dataTec1","configGraphTec2","columnsGraphTec2","dataTec2","configGraphTec3","columnsGraphTec3","dataTec3","configGraphTec4","columnsGraphTec4","dataTec4","configGraphTec5","columnsGraphTec5","dataTec5","configGraphBroker1","columnsGraphBroker1","dataBroker1","configGraphBroker2","columnsGraphBroker2","dataBroker2","configGraphBroker3","columnsGraphBroker3","dataBroker3","chartType","chartId","primaryXAxis","primaryYAxis","tooltipChart","palettes","chartArea","legendSettings","zoomSettings","_l","seriesName","xName","yName","marker","cornerRadius","dataLabel","gridToolbarClick","dataGrid","gridLoad","gridDataBound","isBlazorPlatform","createInstance","classFunction","params","arrayParam","unshift","Function","setImmediate","handler","unbind","Uint16Array","intCrypto","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","postMessage","getValue","nameSpace","obj","splits","isUndefined","setValue","start","fromObj","isNullOrUndefined","deleteObject","isObject","objCon","merge","destination","temrObj","tempProp","deepmerge","keys_1","isArray","extend","copied","first","second","deep","_loop_1","arguments_1","obj1","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","debounce","eventFunction","out","later","clearTimeout","compareElementParent","child","parent","throwError","Error","stack","print","printWindow","div","links","getElementsByTagName","blinks","l","reference","interval","setInterval","ready","clearInterval","uniqueID","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","getSymbolMatch","matchKeys","matchKeys_1","constructRegex","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","getBlazorCurrencySymbol","currencyCode","dateCorrection","getHijriDate","gDate","day","getDate","month","getMonth","year","getFullYear","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","z","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","toGregorian","mcjdn","julianDate","a","gDay","gMonth","gYear","Date","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","h","H","s","datePartMatcher","DateFormat","culture","cldr","dependable","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","compareBlazorDateFormats","resPattern","format","getResultantPattern","skeleton","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","numMapper","parserObject","patternMatch","patternMatch_1","weekday","monthIndex","days","designator","eText","era","timeZone","intDateFormatter","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","substr","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","splt","curPattern","abs","ishour","errorText","percentSign","minusSign","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minFrac","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","lastIndexOf","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","checkRange","range","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","tn","toPrecision","level1","sep","decimalSymbol","level2","flag","prefix","toFixed","lead","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tval","tzone","hpattern","parseTimeZoneRegx","iString","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","tKeys","y","century","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","toUpperCase","toLowerCase","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","Infinity","NaN","exponent","convertMaxFracDigits","decimalSplitValue","Observer","context","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","off","indexLocation","argument","errorHandler","blazor","blazorCallback","curObject_1","objs","isTrigger","obj_1","promise","then","isJson","dateReviver","catch","dPattern","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","blazorCultureFormats","IntlBase","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","defaultFirstDay","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","tPattern","calendartype","blazorDefaultObject","defaultObject","dateString","numSystem","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","symbol","getCurrency","formatSplit","customNumberFormat","integerPart","fractionPart","isCurrencyPercent","parts","actual","part","loc","dateObj","actualPattern","tLength","timeZonePattern","options_1","processSymbol","numrericObject","curMatch","curCode","hasNegativePattern","defaultMinimum","fractionDigitsPattern","minimumIntegerPattern","groupingPattern","cPattern","minDigits","maxDigits","diff","integer","x","hash","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","getTime","nYear","nday","3","4","5","C","P","N","A","E","headerRegex","defaultType","Ajax","async","contentType","emitError","url","send","httpRequest","Promise","resolve","reject","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","setRequestHeader","beforeSend","onSuccess","failureHandler","onFailure","responseText","readyState","statusText","getResponseHeader","responseHeaders","exec","getAllResponseHeaders","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","version","language","navigator","getEvent","events","isPointer","isTouch","move","isWindows","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","uA","enumerable","maxTouchPoints","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","listener","bindTo","intDebounce","debounceListener","eventData","passive","some","clearEvents","copyData","shift","eventData_1","event_1","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","helper","ignorePrefix","argName","evalExpResult","evalExp","fnCode","fn","varCOunt","localKeys","isClass","singleSpace","offset","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","splArrRegexp","SlashReplace","NameSpaceForspecialChar","addNS","ignoreList","NameSpaceArrObj","arrObjReg","tempStr","double","nameSpaceNew","windowFunc","quotes","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","templateString","compiler","engineObj","propName","templateId","blazorTemplateId","randomId","blazorId","updateBlazorTemplate","templateName","comp","isEmpty","callBack","ejsIntrop","updateTemplate","resetBlazorTemplate","templateDiv","innerTemplates","tempId","tempElement","setTemplateEngine","classObj","getTemplateEngine","Engine","simpleRegex","multipleSplitRegex","idClassSelector","selectMapper","classRegexString","assigner","emptyElements","blockElements","inlineElement","selfClosingElements","fillAttrs","cspElement","nameMapper","startRegex","endRegex","attributeRegex","VirtualDOM","extended","ConvertHTMLToJSon","valArr","vObj","cVal","styleSplit","assignParent","childrens","detach","append","fromElements","toElement","prepend","vDomSelector","immediateParent","iSelector","curColl","length_2","isDescendant","parent_2","curSelector","processSelector","splitSelector","splitSelector_1","curMap","dSelector","dParent","descendent","_b","dSelector_1","sel","descendentChild","dParent_1","iCurSelector","_d","parent_1","curParent","accessElement","curMapper","canPush","existValue","mapper_1","expected","actualValue","htmlString","isText","tagArray","nodeArray","lastVal","getLastValue","all","iterateText","iterateEndTag","iterateStartTag","tagIndex","rest","isSelfTag","names","length_3","tagObject","parent_3","parent_4","parent_5","setStyleAttribute","SVG_REG","createElementNS","addClass","getClassList","classList_1","curClass","removeClass","canRemove","classList_2","classes_1","classArr","iKey","needsVDOM","querySelectId","nodeList","charRegex","idList","splitId","setId","closest","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","isDestroyed","prevDetection","callChildDataBind","clearChanges","newChanges","oldChanges","sfBlazor","updateModel","saveChanges","moduleClass","getObject","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","inst","propertyGetter","propertySetter","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","curText","Animation","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","getModel","elements_1","delayAnimation","stop","animationId","frameId","cancelAnimationFrame","applyAnimation","timeStamp","step","timerId","prevTimeStamp","startAnimation","avg","requestAnimationFrame","performance","now","fail","lastPageID","MODULE_SUFFIX","ModuleLoader","loadedModules","inject","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","usedModules","arg","removableModule","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","clearUpdate","curIndex","restrictServerDataBind","isSaveChanges","parentKey","complexKeys","isFinal","actionProperty","valueLength","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","needsID","isReactHybrid","moduleLoader","localObserver","detectFunction","enablePersistence","setPersistData","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","getItem","ej2StatePersistenceVersion","mergePersistData","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","isHistoryChanged","pageID","location","href","charCodeAt","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","left","top","bottom","right","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","scroll","client","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","intCoord","getCoordinates","initialPosition","pageX","pageY","getBoundingClientRect","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","documentElement","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","distance","sqrt","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","docBody","docEle","returnValue","dragStop","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","scrollWidth","scrollHeight","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","sender","reset","draggable","draggedElement","dropIns","getDropInstance","drop","eleInst","eleInst_1","Droppable","mouseOver","area","accept","isDrag","isDropArea","canDrop","droppedElement","coord","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","shiftKey","curkeyCode","configCollection","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","unwireEvents","configCache","keyData","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","scrollArg","startEvents","startX","startY","distanceX","distanceY","scrollDirection","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","isFirefox","endPoint","calcPoints","swipeArgs","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflow","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","output","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","ComponentBase","childDirObjects","isVue","vueInstance","getInjectedServices","injectables","$vnode","$options","childKey","fetchChildPropValues","curChildDir","assignValueToWrapper","beforeDestroy","tempBeforeDestroyThis","prevModule","curModule","curModule_1","silent","childOption","dirProps","getDirectiveValues","dirProp","tagDirectives","keyTags","dir","tagDirectives_1","tagDirective","componentOptions","tag","dirTag","tagDirChild","retObj","getVNodeValue","getMultiLevelDirValue","tagDirectories","tagKey","mulObj","tagDirectories_1","tagDir","mulLevObj","getCamelCaseProps","retProps","$internalHooks","EJComponentDecorator","EJcomponentFactory","_componentTag","proto","watch","collectDataFromConstructor","__decorators__","superProto","getPrototypeOf","Super","Extended","vm","_init","plainData","Theme","stringCompiler","templateElement","that","pid","returnEle","tempObj","templateFunction","propsData","dataObj","extends","templateVue","$mount","getSeriesColor","theme","palette","getThemeColor","darkBackground","axisLabel","axisTitle","axisLine","majorGridLine","minorGridLine","majorTickLine","minorTickLine","chartTitle","legendLabel","background","areaBorder","errorBar","crosshairLine","crosshairFill","crosshairLabel","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","markerShadow","selectionRectFill","selectionRectStroke","selectionCircleStroke","getScrollbarThemeColor","scrollStyle","backRect","thumb","circle","circleHover","arrow","grip","arrowHover","backRectBorder","axisLabelFont","fontWeight","color","fontStyle","fontFamily","axisTitleFont","chartTitleFont","chartSubTitleFont","crosshairLabelFont","tooltipLabelFont","legendLabelFont","legendTitleFont","stripLineLabelFont","stockEventFont","Connector","Font","Border","Offset","ChartArea","Margin","ContainerPadding","Indexes","CornerRadius","Index","seriesIndex","pointIndex","series","EmptyPointSettings","DragSettings","TooltipSettings","Periods","PeriodSelectorSettings","SvgRenderer","rootID","svgLink","rootId","getOptionValue","createSvg","svgObj","setElementAttributes","setSVGSize","drawPath","path","drawLine","line","drawRectangle","rectangle","drawCircle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","polygon","drawImage","img","setAttributeNS","preserveAspectRatio","createText","createTSpan","tSpan","createTitle","createDefs","defs","createClipPath","clipPath","createForeignObject","foreignObject","createGroup","createPattern","createRadialGradient","colors","colorName","colorStop","newOptions","cx","cy","fx","fy","drawGradient","createLinearGradient","x1","y1","x2","y2","gradientType","gradient","stop_1","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","ctx","getContext","setCanvasSize","setAttributes","lineWidth","dashArray","dashArrayString","setLineDash","strokeStyle","save","beginPath","stroke","moveTo","lineTo","restore","canvasTranslate","canvasCtx","translate","globalAlpha","drawCornerRadius","fill","fillStyle","fillRect","arcTo","closePath","dataSplit","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","radius","counterClockWise","PI","transX","transY","dy","isTSpan","fontSize","font","anchor","textAlign","baseline","textBaseline","txtlngth","rotate","labelRotation","fillText","points","circumference","ry","scaleX","scaleY","scale","imageObj","Image","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","values","updateCanvasAttributes","dataUrl","img_1","clearRect","canvasClip","clip","canvasRestore","getTooltipThemeColor","measureText","breakText","htmlObject","textArray","whiteSpace","lineHeight","Size","clientWidth","clientHeight","findDirection","rX","rY","arrowLocation","arrowPadding","tipX","tipY","tipRadius","direction","Rect","Side","isRight","isBottom","CustomizeOption","TextOption","transform","baseLine","drawSymbol","shape","renderer","calculateShapes","functionName","renderOption","locX","locY","eq","xValue","yValue","cos","sin","PathOption","textElement","renderOptions","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","Tooltip","initPrivateVariable","isCanvas","removeSVG","createTooltipElement","themeStyle","formattedText","isFirst","markerPoint","svgObject","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","createTemplate","areaBounds","renderText","argsData","tooltip","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","shared","groupElement","pathElement","border","shapes","shapeOption","markerGroup","marginX","tooltipDiv","tipLocation","isTop","isLeft","elementSize","marginY","sharedTooltipLocation","tooltipLocation","inverted","clipBounds","headerSize","isWrap","wrappedText","textStyle","xLength","pathElement_1","pointRect","updateDiv","animateTooltipDiv","tooltipPlacement","enableShadow","shadowId","shadow","defElement","changeText","findFormattedText","isRender","lines","tspanElement","textCollection","tspanOption","subWidth","tspanStyle","isRtlEnabled","leftSpace","rightSpace","headerContent","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","isColumn","subStringLength","markerPadding","spaceWidth","labelColor","withoutHeader","isHeader","pointsLength","isTextWrap","len_1","getTextContent","width_1","texts","isRtlText","isValidHTMLElement","firstElement","controlInstance","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","bounds","heightDifference","tooltipDivEndValue","boundsEndValue","isStockChart","containerDivID","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","currenDiff","fadeOut","tooltipElement","tooltipGroup_1","opacity_1","progressAnimation","endAnimation","tooltipGroup","keyEntity","DoubleRange","mStart","mEnd","Double","chart","calculateNumericNiceInterval","delta","actualDesiredIntervalsCount","getActualDesiredIntervalsCount","niceInterval","desiredIntervals","minInterval","pow","logBase","intervalDivs","currentInterval","getActualRange","initializeDoubleRange","startFromZero","actualRange","doubleRange","minimum","POSITIVE_INFINITY","maximum","NEGATIVE_INFINITY","valueType","calculateRangeAndInterval","calculateRange","applyRangePadding","calculateVisibleLabels","setRange","paddingInterval","maxPointLength","orientation","xAxis","rangePadding","getMinPointsDelta","requireInvertedAxis","yAxisRange","findMinMax","xMin","xMax","drawType","dragSettings","dragY","visibleRange","yMax","yMin","getRangePadding","findAdditional","findNormal","updateActualRange","calculateVisibleRange","ceil","startValue","chartAreaType","isLazyLoad","zoomingScrollBar","zoomFactor","zoomPosition","calculateVisibleRangeOnZooming","calculateAxisRange","enableAutoIntervalOnZooming","triggerRangeRender","visibleLabels","labelStyle","tempInterval","isPolarRadar","duplicateTempInterval","getFormat","isCustom","intervalDigits","formatDigits","labelFormat","intl","useGroupingSeparator","startLabel","endLabel","withIn","triggerLabelRender","formatValue","getMaxLabelWidth","isStack100","legendClick","animationComplete","legendRender","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelRender","axisLabelClick","axisRangeCalculated","tooltipRender","chartMouseMove","chartMouseClick","pointClick","pointDoubleClick","pointMove","chartMouseLeave","chartMouseDown","chartMouseUp","zoomComplete","resized","beforeResize","beforePrint","scrollStart","scrollEnd","scrollChanged","regSub","regSup","afterExport","onZooming","ChartAnnotationSettings","LabelBorder","MultiLevelCategories","StripLineSettings","MultiLevelLabels","ScrollbarSettingsRange","ScrollbarSettings","Row","axes","nearSizes","farSizes","computeSize","scrollBarHeight","innerPadding","internalVisibility","findTickSize","crossInAxis","findLabelSize","lineStyle","opposedPosition","Column","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","crossAt","updatedRect","multiLevelLabelHeight","isChart","isIntervalInDecimal","titleCollection","titleSize","angle","crossAxis","tickPosition","isInside","majorTickLines","inside","isHorizontal","titleStyle","getTitle","labelPosition","labelSize","titlePadding","labelPadding","maxLabelSize","placeNextToAxisLine","findDifference","updateCrossValue","valueToCoefficient","isInversed","isZoomSet","baseRange","zoomModule","enableAutoIntervalOnBothAxis","visiblePoints","axisCollections","baseModule","_f","_g","stockChart","pointX","isAxisLabelBreak","previousEnd","isIntersect","labelIntersectAction","isBreakLabel","originalText","breakLabelSize","enableTrim","rotatedLabel","width1","edgeLabelPlacement","findMultiRows","result1","textWrap","height_1","isHorizontalAngle","rotateTextSize","multiLevelLabelModule","multiLevelLabels","getMultilevelLabelsHeight","currentX","currentLabel","isBreakLabels","width2","isMultiRows","store","getModule","firstToLowerCase","VisibleLabels","isDescending","sortData","getVisiblePoints","tempPoint","tempPoints","labelText","initialClipRect","delayRedraw","redraw","box","base","showTooltip","areaWidth","isTitleOrLegendEnabled","logWithIn","withInRange","previousPoint","currentPoint","nextPoint","mX2","mX1","mX3","xStart","xEnd","sum","values_1","subtractThickness","thickness","subtractRect","degreeToLocation","degree","center","radian","ChartLocation","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","centerX","centerY","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","polygons","i2","p1","p2","normal","getAccumulationLegend","cartesianlarge","cartesiansmall","getAngle","atan2","subArray","TransformToVisible","yAxis","isInverted","labelPlacement","CoefficientToVector","valueToPolarCoefficient","startAngle","clipRect","indexFinder","isPoint","ids","coefficient","dateTimeInterval","Mean","verticalStandardMean","verticalSquareRoot","horizontalStandardMean","horizontalSquareRoot","verticalMean","horizontalMean","PolarArc","endAngle","innerRadius","currentXPosition","createTooltip","createZoomingLabels","chartRect","availableSize","scrollbarSettings","withInBounds","getValueXByPoint","getValueYByPoint","findClipRect","seriesCollection","xValues","minVal","seriesMin","minDelta","MAX_VALUE","xAxisName","getAnimationFunction","currentTime","endValue","markerAnimate","isLabel","animateRectElement","currentRect","previousRect","pathAnimation","previousDirection","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","endPath","directions","appendClipElement","clipElement","redrawElement","def","isLineBreakLabels","text_1","lineBreakLabelTrim","maximumLabelWidth","textTrim","desiredIntervalsCount","maximumLabels","templateAnimate","isRemove","isChartControl","control","chartRenderer","drawElement","Int32Array","xVal","yVal","isBulletChart","sizeBullet","targetWidth","lx","ly","calculateLegendShapes","getRectLocation","startLocation","endLocation","outerRect","minMax","getTemplateFunction","accReactTemplate","childElement","datalabelGroup","clientRect","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","labelIndex","category","dataLabelCollections","dataLabelModule","calculateTemplateLabelSize","dataLabelId","tempObject","elementData","reactCallback","getFontStyle","measureElementRect","isReactCallback","findlElement","getPoint","yLength","locationX","locationY","appendChildElement","isAnimate","forceAnimate","existChild","animateRedrawElement","getLabelText","customLabelFormat","seriesType","stackedValues","endValues","high","low","median","upperQuartile","lowerQuartile","outliers","liers","stopTimer","timer","collections","isCollide","containsRect","calculateRect","textSize","convertToHexCode","componentToHex","g","hex","convertHexToColor","ColorValue","colorNameToHex","exp","isRGBValue","getSaturationColor","factor","colorCode","rgb","maxWidth","textLength","labelCollection","breakLabels","stringToNumber","containerSize","isDiv","isMinus","seriesClipRect","isRotatedLabelIntersect","textAnchor","calculateSize","containerWidth","containerHeight","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","canvasRender","enableCanvas","chartObject","selectorObject","textOverflow","titlePositionX","positionX","textAlignment","maximumWidth","getUnicodeText","digit","digitSpecific","convertedText","unicodeSub","unicodeSup","blazorTemplatesReset","annotations","StackValues","startValues","RectOption","ImageOption","CircleOption","PolygonOption","Thickness","LabelLocation","PointData","lierIndex","AccPointData","ControlPoints","controlPoint1","controlPoint2","getColorByValue","colorMap","rbgColorValue","getGradientColor","midColor","previousColor","nextColor","previousOffset","percent","full","splitColorValueOffset","splitColor","getPercentageColor","prevColor","getPercentage","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","Query","from","subQuery","isChild","distincts","queries","fKey","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","setKey","using","dataManager","execute","always","executeQuery","executeLocal","cloned","subQuerySelector","isCountRequired","tableName","addParams","distinct","expand","tables","fieldName","searchKey","fieldNames","comparer","fnOperators","sortBy","isFromGroup","sortByForeignKey","sorts","order","endsWith","fnSort","filterQueries","sortByDesc","page","pageIndex","pageSize","take","nos","skip","hierarchy","selectorFn","foreignKey","requiresCount","aggregate","q","filterQueryLists","singles","filtered","Predicate","isComplex","processOperator","condition","predicates","and","combinePredicates","combine","fromJson","json","fromJSONData","pred","validate","record","isAnd","toJson","preds","consts","GroupGuid","Adaptor","ds","aggregates","pvt","processResponse","xhr","JsonAdaptor","processQuery","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","req","onWhere","level","uid","childLevel","records","aggQuery","tmp","batchRequest","dm","changes","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","onAggregates","onSearch","getFieldList","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","request","filters","searches","callAdaptorFunction","getFiltersFrom","keys_3","isNull","getRequestQuery","reqParams","keys_2","jsonDateReplacer","pvtData","convertToQueryString","request1","param","selects","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","isExpand","formRemoteGroupedData","getAggregateResult","childLvl","lvl","getGroupedRecords","hasRecords","childGroupedRecords","original","batchUrl","crudUrl","removeUrl","changed","added","deleted","table","getAddParams","insertUrl","keyColumn","updateUrl","pKey","predicats","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","guid","getField","encodeURIComponent","isGuid","odBiOperator","odUniOperator","odv4UniOperator","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","reverse","onCount","settings","overrideMimeType","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","metaData","emptyAndBatch","processBatchResponse","versionCheck","oDataCount","requiresFormat","keys_4","localTimeReplacer","convertObj","dateParse","toLocalTime","localTime","compareAndRemove","initialGuid","getGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","dateTime","toJSON","generateBodyContent","org","o","method","cIdx","jsonObj","exVal","changeGuid","isPlainObject","final","valueOf","ODataV4Adaptor","isDate","onExpand","expanded","exArr","ex","onDistinct","distinctFields","metaName","dataCount","WebApiAdaptor","host","_loop_2","_loop_3","datTime","Count","Items","WebMethodAdaptor","getData","RemoteSaveAdaptor","updateKey","urlParams","CustomDataAdaptor","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","adaptor","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","crossDomain","DataManager","offline","timeTillExpiration","cachingPageSize","enableCaching","jsonp","isCors","defaultQuery","isDataAvailable","setDefaultQuery","lookup","buildHierarchy","makeRequest","deffered","Deferred","isCustomDataAdaptor","getDeferedArgs","nextTick","extendRequest","fnSuccess","fnFail","cache","processData","isSelector","process","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","ajaxReqOption","virtualRecords","ajax_1","pResult","cResult","doAjaxRequest","deff_1","ajax_2","successFunc","ajaxDeffered","failureFunc","ajaxFunc","ajax_3","DataUtil","input","startsWith","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","jsonData","indx","childLevels","grouped","groupedArray","this_2","getVal","aggs","grp","fKeyData","copyObj","middle","ignoreDiacritics","diacritics","array","fnName","param1","param2","adp","rand","hexs","Uint8Array","getItemFromComparer","castRequired","requiresCompleteRecord","serverTimezoneOffset","average","truecount","falsecount","operatorSymbols","equal","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","notnull","isnull","startswith","endswith","processSymbols","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","ms","offSet","toTimeZone","isUTC","utcFormat","hrs","mins","addSelfOffset","jsonReplacer","arrayReplacer","toUTC","utc","unix","datefn","differenceString","localtimefn","norm","getSeconds","axisPadding","CartesianAxisLayoutPanel","chartModule","measureAxis","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","calculateAxisSize","refreshAxis","calculateRowSize","arrangeAxis","measureDefinition","computedHeight","calculateColumnSize","computedWidth","definition","scrollBarModule","enableScrollbar","enableScrollbarOnZooming","isZoomed","axisOffset","nearCount","farCount","plotOffset","len_2","span","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","measure","actualIndex","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","position1","position2","rangeOffset","crossesAt","crossesInAxis","updateCrossAt","dateFormatter","labels","axisCollection","actualLength","columnIndex","rowIndex","rowTop","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","axisElement","axisLineElement","findAxisPosition","drawAxisLine","majorGridLines","drawXAxisGridLine","drawXAxisLabels","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","isScrollUI","visibleSeries","scrollElement","definitionName","optionsLine","plotX","plotY","minorGridDirection","isLogAxis","isCategoryAxis","pointY","majorGrid","majorTick","tickSize","axisLineSize","ticksbwtLabel","isTickInside","ticks","chartThemeStyle","minorGridLines","minorTickLines","isBorder","renderGridLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","startIndex","endIndex","isAxisBreakLabel","labelSpace","isLabelInside","isOpposed","tickSpace","defaultAnchor","textHeight","textPadding","maxLineWidth","labelElement","pixel","getAxisLabelXvalue","getAnchor","createZoomingLabel","textWidth","lineBreakAlignment","gap","endY","labelBorder","endX","createAxisBorderElement","renderYAxisMultiLevelLabels","minorDirection","isFirstLabel","logStart","logEnd","coor","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","findLogNumeric","labelHeight","labelWidth","intervalLength","islabelInside","newPoints","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","point1","point2","point3","point4","findAxisLabel","axisRect","renderXAxisMultiLevelLabels","borderElement","gridDirection","gridModel","gridId","gridIndex","themeColor","findParentNode","elementId","zoomElement","ChartData","currentPoints","previousPoints","insideRegion","mouseX","mouseY","isRectSeries","isTransposed","markerWidth","getRectPoint","isSelected","selectionMode","selectionModule","rectPoints","fromCenterX","fromCenterY","clickAngle","distanceFromCenter","arcAngle","isScrolling","regionData","regions","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","region","isBar","heightValue","getClosest","xvalues","xData","isDataExist","getClosestX","mergeXvalues","DataLabelSettings","MarkerSettings","Points","symbolLocations","percentage","isSelect","isPointInRange","Trendline","setDataSource","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","currentViewData","isRectTypeSeries","processJsonData","textMappingName","processInternalData","paretoSeriesModule","performCumulativeCalculation","sizeMax","getSeriesType","dataPoint","pushCategoryData","pushData","setEmptyPoint","isArea","findSplinePoint","calculateBinValues","getObjectValueByMappingString","enableComplexProperty","getObjectValue","volume","interior","pointColorMapping","tooltipMappingName","rangeColorSettings","isAdvancedColorSupported","colorValue","getPointFillColor","pointFill","rangeMap","mappingName","findVisibility","emptyPointSettings","yData","getAverage","yValues","yAxisMin","yAxisMax","setXYMinMax","setHiloMinMax","seriesMinY","isNegativeValue","isIndexed","refreshDataManager","dataModule","generateQuery","dataManagerSuccess","isRemoteData","localData","findCurrentData","recordsCount","refreshChart","refreshTechnicalIndicator","trendlines","trendline","refreshBound","initialRender","stockChartDataManagerSuccess","Series","drawPoints","delayedAnimation","refreshAxisLabel","findSeriesCollection","isStack","rowAxis","rowSeries","rectSeriesInChart","calculateStackedValue","isStacking100","columnItem","calculateStackingValues","stackingGroup","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","stackingSeies","seriesCollection_1","isColumnBarType","findPercentageOfStacking","stackingSeies_1","seriesCollection_2","renderSeries","createSeriesElements","errorBarModule","appendSeriesElement","seriesElements","performAnimation","explodeValue","svgRenderer","markerMaxValue","clipRectElement","symbolElement","seriesElement","errorBarElement","dataLabelElements","shapeElement","hasChildNodes","animateSeries","doAnimation","doErrorBarAnimation","markerRender","doMarkerAnimation","doDataLabelAnimation","setPointColor","setBorderColor","Data","initDataManager","dataQuery","dataManagerDeferred_1","MarkerExplode","mouseMoveHandler","mouseUpHandler","crosshair","markerMove","startMove","explodeSeries","chartAxisLayoutPanel","pointData","commonXvalues","chartSeries","enableTooltip","isPointMouseDown","removeHighlightedMarker","markerExplode","drawTrackBall","seriesMarker","highlightModule","highlightMode","generateStyle","symbolId","borderColor","imageUrl","selectionId","seletionElem","Marker","renderMarker","previousLocation","previousPath","circlePath","markerElement","isBoxPlot","markerFill","markerBorder","markerOpacity","markerShape","imageURL","markerClipRect","getRangeLowPoint","markerElements","animated","incFactor","lowPoint","Location","LegendSettings","BaseLegend","pageXCollections","legendTitleCollections","legendRegions","pagingRegions","legend","legendID","isBulletChartControl","bulletChart","fivePixel","rowCount","pageButtonSize","maxColumns","currentPage","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTitle","currentPageNumber","calculateLegendBounds","getPosition","legendBounds","library","getLegendBounds","containerPadding","getLocation","alignment","accumulation","setBounds","titleHeight","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","maxItemHeight","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","legendSize","renderLegend","titlePlusArrowWidth","pagingLegendBounds","requireLegendBounds","firstLegend","findFirstLegendPosition","legendCollections","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","shapeHeight","getLinearLegend","totalPages","legendSeriesGroup","previousLegend","shapeWidth","textOptions","shapePadding","bottomSapce","legendOption","accessbilityText","generateId","getRenderPoint","renderSymbol","toggleVisibility","renderPagingElements","xmlns","nextLegend","gradientLegendCount","linerGradientEle","fillColors","numberItems","diffValue","colorsLength","calculatedValue","fillColor","offsetValue","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startTextSize","endTextSize","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","hiddenColor","fontcolor","translatePage","gradientLegend","legendCollection","legendCollection_1","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","pagingClipRect","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","seriesBorder","symbolOption","markerVisibility","textOption","pageTextElement","paginggroup","grayColor","iconSize","titleWidth","clipPathHeight","totalNoOfPages","calTotalPage","pagingText","pageNumber","changePage","pageUp","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","targetId","clearTooltip","LegendOptions","TechnicalIndicator","targetSeries","PdfWriter","stream","streamWriter","pdfDocument","buffer","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","pair","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","containsKey","retutnValue","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","objInfo","ObjectInfo","Registered","lookFor","oi","object","getReference","wasNew","trySetReference","found","setReference","pdfObject","objectCollectionIndex","pdfReference","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","chars","validateNullOrUndefined","byte","utf8Len","getByteCountInternal","codePoint","bytes","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","u","charIndex","charCount","byteCount","isUtf8","charCode","getBytes","RangeError","ArrayBuffer","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteLength","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","InternalEnum","Save","extension","mimeType","getMimeType","Blob","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","download","dataUrl_1","URL","createObjectURL","createEvent","initEvent","revokeObjectURL","isPopupBlocked","reader_1","FileReader","onloadend","readAsDataURL","StreamWriter","encoding","bufferBlob","bufferText","init","flush","enc","setBomByte","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","objects","pdfCrossTable","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","cTable","setCatalog","catalog","filename","SW","encoding_1","SW_1","blobData","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","writer","escapeString","crossTable","newName","stringValue","delimiters","replacements","Operators","forTest","endObj","slash","newLine","endStream","xref","trailer","startxref","eof","beginText","endText","appendLineSegment","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPathEvenOdd","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","resources","mediaBox","decodeParms","type1","baseFont","subtype","procset","colorSpace","extGState","xObject","bitsPerComponent","image","dctdecode","blackIs1","predictor","deviceRgb","link","annot","uri","annots","ca","CA","xyz","fit","dest","BM","flatedecode","bBox","form","w","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","fontName","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","shading","matrix","antiAlias","function","shadingType","coords","domain","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","PdfDictionary","dictionary","position7","primitiveItems","suffix","archive","isFont","encrypt","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","newDict","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","saveItems","name_1","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveSectionEventHandler","SaveAnnotationEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","rValue","intValue","newNumber","floatToString","number","returnString","PdfArray","startMark","endMark","position9","clonedObject9","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","newArray","fromRectangle","tempElements","markChanged","removeAt","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","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","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","encode","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","success","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","chainLen","niceLen","scan","bestEnd","bestLength","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","code","buildCodes","treeLength","rank","writeTree","literalLen","writeCodeToStream","bits","Uint32Array","pendingBufferFlushBits","isClose","bitReverse","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","leafsCount","nodesCount","iIndex","constructHuffmanTree","buildLength","last","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","checksum_uint","s1","s2","checkSumBitOffset","checksumIterationCount","checksumBase","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","isImageStream","isFontStream","dataStream2","bCompress2","clearStream","internalStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","sw","getCompressedString","addFilter","filterName","rh","isImage","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","ObjectType","PdfString","bHex","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","builder","Ascii","pdfEncode","stringMark","escapeSymbols","currentData","CrossTable","newString","toUnicodeArray","bAddPrefix","byteToString","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","returnObject3","PdfReferenceHolder","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfCatalog","sections","tempDictionaryProperties","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","prevXRef","saveSections","saveTrailer","saveTheEndess","objectCollection","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","total","refString","generateFileVersion","iVersion","bNew","getSubReference","objnumber","nextObjNumber","tempkey","tempvalue","None","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","dereference","RegisteredObject","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","topLeft","PdfPageSize","letter","note","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","rotateAngle","RotateAngle0","pageOrientation","Portrait","pageOrigin","isRotation","setSize","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","wordSpacing","showNextLineText","setColorSpace","temparg1","temparg2","op","opcode","updateY","string","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","arg5","arg6","setColourWithPattern","colours","patternName","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","toArray","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","pen","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","textValue","currentPosition","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","word","peek","readToEnd","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","layout","arg7","clientSize","doLayout","rectSize","pageHeight","reader","lineResult","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","wordWrap","Character","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","wrapType","PdfStringLayoutResult","empty","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","charactersFitted","linesFilled","layoutArea","temparg3","layouter","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","whitespacesCount","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","transformationMatrix","offsetX","whitespace","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","radians","Matrix","metrixElements","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","ReferenceError","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","getSize","getBrush","defaultFont","getPageFromGraphics","PdfAutomaticFieldInfo","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","DataView","readByte","getBuffer","writeFromBase64String","base64","encodedString","chr1","chr2","chr3","enc1","enc2","enc3","enc4","keyStr","resultIndex","totalLength","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readString","readInt32","lowestPosition","fixOffsets","minOffset","tableKeys","fontTag","ttcIdentificationNumber","tableInfo","getTable","formatSelector","readUInt16","nameRecords","recordSize","platformID","encodingID","languageID","nameID","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","modified","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","readCmapTable","tablesCount","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","getWidth","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","Symbol","firstCode","entryCount","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","isSymbol","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","unknown","getDefaultGlyph","readLocaTable","bShort","offsets","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","nextKey","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","entry","glyphIndex","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","glyphSize","glyphSizeAligned","align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","setOffset","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result2","fontProgram","convertString","getCharWidth","codeWidth","isUnicode","sFraction","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","swt","UnicodeTrueTypeFont","base64String","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","charWidth","internalBuffer","ttfMetrics","fontDictionary","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","formatName","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","st","doShape","ligature","ArabicShape","present","shapeCount","getShapeCount","Shapes","Value","Ligature","Type","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexes","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","isRtl","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","even","pstart","pend","reArrange","types","textOrder","rtlCharacterTypes","L","LRE","LRO","R","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","B","WS","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","t","lt","tt","rt","RtlRenderer","openBracket","closeBracket","rtl","wordSpace","customLayout","splitLayout","words","system","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","bidi","layouted","addChars","reversedLine","ImageFormat","PdfBoolean","objectStatus","saving","boolToStr","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","initializeCoordinates","addType","addSubType","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageData","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","to","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","decoder","PdfResources","baseDictionary","getNames","primitive","sName","generateName","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","PdfTilingBrush","mStroking","mLocation","mDictionaryProperties","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","resources1","name1","PdfGraphics","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","stateControl","xOffset","yOffset","layer","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","physicalDimension","name_2","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","vShift","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","layoutedRectangle","Center","Right","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","subScript","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","nextPage","getPages","setClip","tm","getTextRenderingMode","ws","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","tokens","token","convertToUnicode","getUnicodeString","xShift","tokenWidth","converted","boundsWidth","hasWordSpacing","difference","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","underline","strikeout","linePen","createUnderlineStikeoutPen","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","Left","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","td","TransparencyData","name_3","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","textRenderingMode","doRestoreState","popState","buildUpPath","pathPoints","pathTypes","fillMode","drawArc","constructArcPath","typeValue","Start","Bezier3","p3","getBezierPoints","Line","checkFlags","pathTypesValuesMask","CloseSubpath","startAng","sweepAngle","getBezierArc","pt","numX1","numY1","numX2","numY2","e1","fragAngle1","numFragments","xcen","ycen","halfAng","kappa","pointsList","thetaValue0","thetaValue1","cos0","cos1","sin0","sin1","transparencyObject","PdfGraphicsState","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","sign","oPage","sc","isSame","origin","getActualBounds","PdfCollection","PdfPageLayerCollection","parentLayerCount","optionalContent","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","PdfPageBase","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","returnlayer","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","annotation","doAdd","setPage","layoutResult","lastPosition","setColor","PdfPage","annotationCollection","defaultLayer","parentDocument","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","hasBackTemplates","containsTemplates","backLayer","drawTemplates","hasFrontTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","pageCount","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","onPageAdded","document_1","getLeftIndentWidth","top_1","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","container","parentSettings","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","PdfSectionCollection","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","PdfStandardFontMetricsFactory","getMetrics","Helvetica","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","PdfStandardFont","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","convert","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","PdfDocument","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","currentLocation","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","calculateBounds","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","ExportUtils","outerHeight","outerWidth","resizeTo","screen","availWidth","availHeight","htmlContent","getHTMLContent","Element","export","controls","controlValue","getControlsValue","isDownload","svgData","svg","XMLSerializer","serializeToString","msSaveOrOpenBlob","toLocaleLowerCase","triggerDownload","canvas","toDataURL","exportPdf","doexport","image_1","ctx_1","toBlob","getDataUrl","image_2","ctx_2","blobUrl","MouseEvent","bubbles","cancelable","groupEle","pdfDefaultWidth","pdfDefaultHeight","imageString","exactWidth","exactHeight","pdfHeader","pdfFooter","images","fileType","exportImage","buffers","HTMLElement","image1","byteString","atob","intArray","RangeColorSetting","CrosshairSettings","ZoomSettings","Chart","rotatedDataLabelCollections","checkResize","clickCount","singleClickTimer","chartid","mergePersistChartData","isIdHasSpecialCharacter","childElementId","setCulture","refreshDefinition","tooltipModule","svgId","loadEventData","cartesianChartRendering","beforeRenderData","createChartSvg","setTheme","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","getLocalizedLabel","legendModule","getLegendOptions","calculateStackValues","rangeFound","enablePeriodSelector","enableSelector","renderElements","removeSelection","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderBorder","renderTitle","renderAreaBorder","renderSeriesElements","applyZoomkit","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","mainObject","svgRect","initializeModuleElements","indicators","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","svgElement","divElement","mainElement","indicator","createIndicatorElements","getTrendLineElements","calculateStockEvents","enablePan","performedUI","applyZoomToolkit","annotationModule","renderAnnotations","selectedDataIndexes","invokeSelection","invokeHighlight","redrawSelection","check","initializeDataModule","techIndicator","subTitleHeight","subTitleCollection","subTitle","titleText","subTitleStyle","exportChart","trendIndex","trendLine","initSeriesCollection","yAxisName","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","targetIndicator","zOrder","initSeries","renderSubTitle","subTitleElementSize","subTitleOptions","backGroundImage","backgroundImage","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","removeAxis","removeSvg","stopEvent","chartOnMouseDown","mouseMove","mouseEnd","chartOnMouseClick","chartRightClick","mouseLeave","resizeBound","touchObject","chartResize","longPressBound","longPress","tapHold","crosshairModule","buttons","pointerType","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","isOrientation","setMouseXY","exportModule","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","touchArg","chartOnMouseMove","chartOnMouseLeave","isChartDrag","timeInterval","observers","triggerPointEvent","triggerAxisLabelClickEvent","clickEvt","axisIndex","currentAxis","labelID","titleTooltip","axisTooltip","dataEditingModule","pointMouseMove","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","threshold","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","setAnnotationValue","annotationIndex","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","moduleName","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableMouseWheelZooming","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","striplines","striplines_1","stripline","removeLength","pinchTarget","containerCollection","definitions","definitions_1","axisChange","getVisibleSeries","visibleSeries_1","refreshLiveData","removeStyles","refreshBounds","crosshairTooltip","seriesRefresh","blazorProp","isClosed","boxPlotMode","showMean","currentMode","styleId","isMultiSelect","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","ColumnBase","getSideBySideInfo","enableSideBySidePlacement","getSideBySidePositions","seriesSpacing","columnSpacing","pointSpacing","columnWidth","minimumPointDelta","getRectangle","findRectPosition","vSeries","updateSymbolLocation","updateYRegion","updateXRegion","histogramValues","binWidth","getRegion","calculateRoundedRectPath","topRight","bottomLeft","bottomRight","rectElements","visiblePoints_1","animateRect","isPlot","elementHeight","elementWidth","BarSeries","sideBySideInfo","pointBar","Legend","visibleSeriesCollection","visibleSeriesCollection_1","legendShape","legendImageUrl","extraHeight","extraWidth","verticalArrowSpace","titleSpace","legendEventArgs","rowWidth","columnHeight","titlePlusArrowSpace","prevLegend","previousBound","availwidth","LegendClick","changeDetection","legendClickArgs","legendText","changeSeriesVisiblity","refreshLegendToggle","legendSelection","points_1","redrawSeriesElements","refreshSeries","isSecondaryAxis","legendRegion","legendItemsId","legendItemsId_1","checkWithinBounds","cRender","canvasRect","BaseTooltip","getElement","getTooltipElement","isTooltip","stopAnimation","removeHighlight","highlightPoint","highlight","accumulationSelectionModule","isSelectedElement","highlightPoints","clipLocation","extraPoints","templatePoint","customTemplate","accumulationTooltipModule","contentSize","heightPadding","getPositionBySize","svgTooltip","headerText","findPalette","enableTextWrap","updatePreviousPoint","tooltipPos","isTooltipFitPosition","findColor","valueX","valueY","removeText","toolTipInterval","removeTooltip","tooltipTemplate","isTemplateRendered","mouseLeaveHandler","fadeOutDuration","disableTrackTooltip","onPanning","isStockSvg","renderGroupedTooltip","renderSeriesTooltip","findHeader","parseTemplate","findShapes","enableMarker","findData","isPointDragging","triggerTooltipRender","getTooltipText","findMouseValue","pointText","chartTooltipSuccess","getSymbolLocation","findMarkerHeight","getTemplateText","getBoxLocation","getWaterfallRegion","getRangeArea","formatPointValue","lastData","triggerSharedTooltip","triggerBlazorSharedTooltip","findSharedLocation","blazorSharedTooltip","sharedTooltipSuccess","toolbarHeight","dataValue","isXPoint","isYPoint","tooltipFormat","getIndicatorTooltipFormat","textX","NiceInterval","calculateDateTimeNiceInterval","oneDay","startDate","endDate","totalDays","actualIntervalType","intervalType","getSkeleton","currentValue","previousValue","getDayFormat","getMonthFormat","findCustomFormats","Category","StackingColumnSeries","stackedValue","ColumnSeries","pointColumn","DataLabel","errorHeight","initPrivateVariables","commonId","calculateErrorHeight","chartBackground","positiveHeight","negativeHeight","rgbValue","contrast","labelLocation","yAxisInversed","isDataLabelOverlap","showZero","labelLength","xPos","yPos","shapeRect","argsFont","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","visibleAxisLabelRect","rectRegion","actualRect","enableRotation","isDataLabelOverlapWithChartBound","currentPointIndex","isShape","loc1","loc2","loc3","loc4","elementRect","clipWidth","clipHeight","isOverlap","vAxis","hAxis","labelRegion","getLabelLocation","alignmentValue","calculateAlignment","calculateRectPosition","calculatePathPosition","calculatePolarRectPosition","columnRadius","chartWidth","alignmentSign","extraSpace","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","slope","intersectY","shapeElements","textNode","DateTime","datetimeInterval","getYear","getHour","endMinute","endSecond","startYear","endYear","endMonth","endDay","endHour","increaseDateTimeInterval","axisLabels","alignRangeStart","blazorCustomFormat","skeletonType","setMonth","setSeconds","getDecimalInterval","sDate","intervalSize","sResult","minutes","seconds","roundValue","decimalValue","sec","milliSec","getMilliseconds","Toolkit","iconRectOverFill","iconRectSelectionFill","zoomCompleteEvtCollection","selectionColor","iconRect","createPanButton","panElements","pan","createZoomButton","rectColor","zoomElements","zoom","createZoomInButton","polygonDirection","zoomInElements","elementOpacity","zoomIn","createZoomOutButton","zoomOutElements","zoomOut","createResetButton","icon2","icon3","hoveredID","iconColor","zoomingEventArgs","toolkitElements","zoomedAxisCollection","previousZoomFactor","previousZoomPosition","currentZoomFactor","currentZoomPosition","previousVisibleRange","currentVisibleRange","axisName","axisRange","setDefferedZoom","touchMoveList","touchStartList","zoomInOutCalculation","applySelection","cumulative","browserName","wheelEvent","toolkit","zoomingRect","zoomAxes","zoomkitOpacity","isIOS","isIos","isIos7","renderZooming","calculateZoomAxesRange","doPan","drawZoomingRectangle","currentScale","performDefferedZoom","redrawOnZooming","translateX","translateY","enableDeferredZooming","setTransform","performZoomRedraw","doZoom","zoomRect","zoomedAxisCollections","onZoomingEventArg","isRedraw","isMouseUp","zoomCompleteCollection","performMouseWheelZooming","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","isPinch","xAxisLoc","yAxisLoc","showZoomingToolkit","toolboxItems","toolbarItems","spacing","xPosition","shadowElement","currentItem","outerElement","zoomDiv","zoomheight","zoomToolkitMove","zoomToolkitLeave","showToolkit","chartMouseWheel","mouseDownHandler","mouseCancelHandler","touches","addTouchPointer","touchList","pointerId","createScrollSvg","scrollbar","isHorizontalAxis","enablePadding","tempSeries","ScrollElements","scrollGroup","backRectGroup","thumbGroup","renderCircle","arrows","thumbGrip","scrollbarThemeStyle","backRectEle","leftArrowEle","rightArrowEle","setArrowDirection","thumbRectX","thumbRectWidth","circleRadius","leftDirection","rightDirection","slider","scrollShadowEle","shadowGroup","leftCircleEle","rightCircleEle","sidePadding","gripWidth","gripCircleDiameter","gripCircle","ScrollBar","scrollRange","scrollElements","mouseMoveListener","scrollMouseMove","mouseUpListener","scrollMouseUp","getMouseXY","scrollMouseDown","scrollMouseWheel","isResizeLeft","isExist","isResizeRight","previousXY","previousWidth","previousRectX","startZoomPosition","startZoomFactor","startRange","scrollStarted","getArgs","isThumbDrag","cursor","moveLength","isWithIn","positionThumb","setZoomFactorPosition","thumbMove","calculateLazyRange","isCustomHeight","mouseXY","thumbX","currentWidth","isRequire","circleWidth","currentScrollWidth","currentZPWidth","setCursor","currentRange","resizeThumb","calculateMouseWheelRange","previousAxisRange","isScrollEnd","scrollThumbX","scrollThumbWidth","previousRange","getStartEnd","previousStart","currentStart","currentEnd","isCurrentStartEnd","isScrollExist","getDefaults","getTheme","removeScrollSvg","isLeftHover","isRightHover","isAxis","isCurrentAxis","minThumbWidth","getLazyDefaults","scrollX","scrollY","minThumbX","getLogRange","currentRanges","scrollArgs","LineBase","tempPoints2","xVisibleRange","yVisibleRange","seriesPoints","xTolerance","yTolerance","prevXValue","prevYValue","seriesPoints_1","getLineDirection","firstPoint","secondPoint","getPointLocation","appendLinePath","doProgressiveAnimation","strokeDashArray","pathLength","getTotalLength","storePointLocation","withinYRange","getFirstLastVisiblePoint","doLinearAnimation","xCenter","yCenter","LineSeries","prevPoint","isPolar","isDrop","getCoordinate","AccumulationAnnotationSettings","AccumulationDataLabelSettings","PieCenter","AccPoints","labelVisible","isExplode","isClubbed","isSliced","isLabelUpdated","initialLabelRegion","AccumulationSeries","clubbedPoints","sumOfPoints","rightSidePoints","leftSidePoints","dateSource","resultData","getPoints","seriesCounts","findSumOfPoints","sumOfClub","clubValue","groupTo","setPoints","isClub","pushPoints","lastGroupTo","clubPoint_1","generateClubPoint","pointsLength_1","explode","explodeAll","explodeIndex","clubPoint","sliceRadius","groupMode","separatorY","setAccEmptyPoint","seriesGroup","renderPoints","renderDataLabel","findMaxBounds","labelBound","accumulationBound","pieSeriesModule","accumulationLegendModule","explodeDistance","pointId","renderPoint","getSeriesElement","findAreaRect","firstQuarter","secondQuarter","midAngle","drawDataLabels","dataLabelCallBack","totalbound","bound","getSeriesFromIndex","pointByIndex","AccumulationBase","pieCenter","pieRadius","pieLabelRadius","labelRadius","isCircular","isVariousRadius","isRadiusMapped","processExplode","explodePoints","deExplodeAll","invokeExplode","pointExplode","animationDuration","deExplodeSlice","clubPointsExploded","clubPointExplode","getSum","explodeSlice","sliceId","setTranslate","setElementTransform","isReverse","PieBase","initProperties","initAngles","radiusCollection","minRadius","maxRadius","seriesRadius","connectorStyle","explodeOffset","findCenter","defaultLabelBound","totalAngle","getLabelRadius","accumulationRect","getSeriesBound","accumulationRectCenter","getRectFromAngle","nextQuandrant","lastQuadrant","getPathArc","getDoughnutPath","getPiePath","clockWise","innerStart","innerEnd","PieSeries","getPathOption","findSeries","borderGap","toggleInnerPoint","createBorderEle","accumulationId","srcElem","innerPie","seriousGroup","addSvgClass","borderExplode","removeBorder","curentDegree","currentStartAngle","accBaseModule","groupId","clipslice","AccumulationChart","animateselected","temIndex","tempcolor","tempindex","tempindex1","currentSeries","datasource","currentSeries_1","entry1","entry2","accPoint","missing","refreshPoints","isIE11Pointer","accumulationMouseMove","accumulationMouseEnd","accumulationMouseStart","accumulationOnMouseClick","accumulationRightClick","accumulationMouseLeave","accumulationResize","svgRectElement","enableBorderOnMouseMove","calculateSelectedElements","createPieSvg","createSecondaryElement","doGrouppingProcess","processSelection","tooltipParent","getSmartLegendLocation","subTitleOption","findDatalabelVisibility","changeVisibleSeries","refreshElements","neckHeight","neckWidth","AccumulationSeriesCollectionDirective","AccumulationSeriesCollectionPlugin","AccumulationSeriesDirective","AccumulationSeriesPlugin","AccumulationAnnotationsDirective","AccumulationAnnotationsPlugin","AccumulationAnnotationDirective","AccumulationAnnotationPlugin","AccumulationChartComponent","AccumulationChartPlugin","AccumulationLegend","titleRect","totalRowCount","getMaxColumn","maxPageColumn","maxColumnWidth","columns_1","getAvailWidth","tx","availablewidth","legendBound","getTitleRect","legendByIndex","legendCollections_1","sliceVisibility","sliceAnimate","AccumulationTooltip","getPieData","firstText","tooltipSuccess","AccumulationDataLabel","rightSideRenderingPoints","leftSideRenderingPoints","getDataLabelPosition","getLabelDistance","getLabelRegion","marginValue","labelAngle","enableSmartLabels","getSmartLabel","circular","connectorLength","findPreviousPoint","isOverlapping","isConnectorLineOverlapping","setOuterSmartLabel","labelRadius_1","areaRect","textTrimming","setPointVisibileFalse","setPointVisibleTrue","textsize","getOverlappedAngle","setSmartLabelForSegments","textRegion","overlapHeight","getEdgeOfLabel","previousstart","previousend","isLineRectangleIntersect","line1","line2","isLinesIntersect","point11","point12","lies","getConnectorPath","connector","getConnectorStartPoint","getPerpendicularDistance","getPolyLinePath","controlPoints","getBezierPoint","p0","labelshape","edge","triangleSize","labelOffset","location_2","getTemplateSize","correctLabelRegion","modifiedPoints","extendedLabelsCalculation","modifiedPoints_1","finalizeDatalabels","dataLabelElement","location_3","setTemplateStyle","getSaturatedColor","doTemplateAnimation","saturatedColor","getLabelBackground","backgroundColor","halfSidePoints","skipPoints","arrangeLeftSidePoints","isIncreaseAngle","arrangeRightSidePoints","startFresh","angleChanged","checkAngle","rightSideRenderPoints","lastPoint","changeLabelAngle","isOverlapWithNext","decreaseAngle","increaseAngle","leftSideRenderPoints","isOverlapWithPrevious","isRightSide","newAngle","variableR","halfsidePoints","angleDiff","prevAngleDiff","secondPrevPoint","thirdAngleDiff","increasedLocation","tooltipText","prefixIcon","accumulationchart","gridExportTool","gridColumns","autoFitColumns","initFilters","beforeYear","macroList","userslist","usersList","statisticBrokerIndex","dataStatistic","statisticBrokerPremium","statisticBrokerStates","statisticTecAttended","statisticTecTimes","statisticTecMacroLines","dataTec","statisticTecMacroTrend","macroLines","statisticTecInsuranceDay","complexities","multiselect","toDate","zones","branchOffices","brokers","agents","requestTypes","insuranceLines","analystList","showLoading","$parent","hideLoading","timeOut","macroInsuranceLineId","isInspection","isLicensePlate","macroDropDown","COL_MACRO_ID","COL_MACRO_NAME","COL_IS_INSPECTION","COL_IS_LICENSE","COL_INSPECTION","COL_LICENSE","inspection","licensePlate","reportType","reportColumns","reportName","ICON","CHECKBOXFRAME","CHECK","CHECKBOXWRAP","INDETERMINATE","checkAllParent","searchBackIcon","filterBarClearIcon","filterInput","mobileFilter","clearIcon","popupFullScreen","device","CheckBoxSelection","activeLi","listSelection","setSelectAll","setSearchBox","setDeviceSearchBox","getFocus","setReorder","getActiveList","setPlaceholder","checboxCreate","setPopupFullScreen","itemCreated","itemCreated_1","checkboxEle","selectAllSpan","isBlazorListbox","checkboxWrapper","frameElm","checkWrapper","validateCheckNode","checkWrap","isCheck","changeState","wrapper","isPrevent","ariaState","frameSpan","backIcon","filterInputObj","createInput","clearIconElement","clearText","clickOnBackIcon","setSearchBoxPosition","backIconElement","clearElement","unSelect","selectAllText","unSelectAllText","activeLiCount","remLi","ulEle","personTypesList","isCreate","validatePerson","personType","documentTypeList","documentType","documentNumber","givenName","otherGivenNames","familyName","otherFamilyNames","isNatural","businessName","email","phoneNumber","isClient","m_clientData","hasErrorAgent","agentTypeList","validateFieldAgent","m_agentData","m_errors_agent","agentType","brokerId","gridClients","m_brokerData","hasErrorBroker","validateFieldBroker","m_errors_broker","branchOfficeId","validateFieldUser","m_userData","hasErrorUser","m_errors_user","userId","m_thirdData","hasErrorThird","validateFieldThird","m_errors_third","thirdPartyTypeList","thirdPartyType","documentTypes","allDocumentTypes","booleanValue","thirdPersonType","isAgent","isBroker","isThird","listDialog","validationSchemaAgent","validationSchemaBroker","validationSchemaThird","validationSchemaUser","gridExclusivitiesRef","typeDropDown","agentDropDown","brokerDropDown","branchDropDown","thirdDropDown","userDropDown","getRestrictiveListConfirmation","restrictiveDialogOk","restrictiveDialogClose","is","otherwise","buildUserFullName","surNames","fullName","currentThirdPersonType","thirdPersonTypes","personId","clientData","agentData","personUser","brokerData","thirdData","enum","factory","strFileName","strMimeType","blob","self","defaultMime","payload","myBlob","MozBlob","WebKitBlob","ajax","responseType","response","dataUrlToBlob","saver","tempUiArr","mx","strUrl","decodeURIComponent","binData","uiArr","winMode","confirm","btoa","dlgShowProcess","requestTypeProcess","rowDataProcess","viewChangeAnalyst","hideFormProcess","hideFormTabSearch","dlgShowHolder","hideFormHolder","personSelected_handler","onGridLoadCurrent","toolbarCurrent_click","gridCurrentData","rowDataBound","setStyleDefault","dataBound","customCommands","weekStartDate","weekEndDate","monthStartDate","monthEndDate","lastMonthStartDate","lastMonthEndDate","lastYearStartDate","lastYearEndDate","dataHolder","deleteHolder","searchHolder","onGridLoadClosed","toolbarClosed_click","toolbarClosed","gridClosedData","rowDataBoundTabSearch","customCommandsTabSearch","divClass","dataRestrictive","dataExclusivity","dataComplexity","requestTypeId","changeRequestType","receptionChannelsList","receptionChannelId","bpmNumber","zoneId","agentId","changeAgent","macroLineId","insuranceLineId","changeInsuranceLine","productsList","productId","policyNumber","isFacultative","requestDate","minRequestDate","maxRequestDate","responseDate","AdditionalEmail","priorityList","manualPriorityId","isManual","userAssigned","stateRequest","replaceAll","stateBroker","insuranceRequestComments","selectedZone","canSeeFiles","canRemoveFiles","canUploadFiles","showSearch","searchTypesList","searchTypeId","newPerson","selectPerson","ToastMixin","searchTypes","searchDropDown","fullNamePerson","dateComment","stateOrigin","stateDestiny","personRemitted","dataFor","users","userRemitted","dataList","uploaderSettings","beforeFileUpload","onFileUpload","fetchRequestFiles","extensions","apiUrl","saveUrl","CurrentSubFolder","cleanZone","zoneName","requestId","maxfs","allowedext","uploadDateString","cssDelete","cssView","canView","fileData","bearer","userToken","tkn","currentRequest","customFormData","deleteFile","canUpload","zone","calculateComplexity","user","ZoneId","newArrayUsers","isBPM","bpm","channel","channels","setBPM","isHolder","isLicense","insuranceLine","setLicensePlate","validationSchemaForm","priorities","initRequest","holderId","riskNumber","radicationDate","complexityId","additionalEmail","agentIdExclusivity","restrictiveData","notificationEmail","isCharge","isLoadingPage","setHolder","promises","documentTypeName","agentNameExclusivity","showingConsult","holder","analyst","currentState","currentSubState","currentStateBroker","currentSubStateBroker","branchOffice","macroInsuranceLine","product","agent","broker","complexity","currentStateId","endProcess","isRenovation","endProcessTabSearch","isApplication","brokerForAgent","m_process","loadRequestStates","requestSubStateId","subStatesList","disableCheckBoxes","assignToList","assignTo","typeList","personList","premium","campaign","rStates","hasStates","requestStatesDestiny","subStateRequired","newArrayThird","isResult","isRemitted","randomColor","par","initComments","requestProcess","userSave","userDestiny","rate","initProcess","loadData","loginService","m_additional","isChange","initAdditional","m_assigned","filteredUsers","brokerDestiny","usersBrokers","ProcessForm","AdditionalForm","ReassignedForm","ReassignedBrokerForm","FileComponent","hasRenewalData","showProcess","showAdditional","showReassigned","showReassignedBroker","surnames","currentInsuranceRequestsList","gridCurrentObj","buttonOption","processTool_click","playTool_click","pauseTool_click","reassignedTool_click","additionalTool_click","cssReassignedBroker","reassignedBrokerTool_click","analystName","closedInsuranceRequestsList","formDataProcess","newArrayBranch","toDateString","finishDate","gridColumnsCurrent","command","getColumnByField","gridColumnsClosed","gridClosedObj","exportClosedTool_click","showForbidden","alert","exportCurrentTool_click","loadDataClosed","getRowDataFromToolbarClosed","getRowDataClosed","searchTool_click","showFormProcess","priority","statesAdditional","getStatesAdditional","itemAdic","statesReassigned","getStatesReassigned","itemState","statesReassignedBroker","itemStateBroker","years","monthsList","requestStatesList","brokerStatesList","reportList","hasAnalyst","lastAnalyst","remittedTo","months","radicationMonth","brokerStates","typeReport","routeReport","route","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","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","clearAll","setControlStatus","setMultipleSelection","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","updateHTMLAttrToElement","updateHTMLAttrToWrapper","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","isServerBlazor","setLocalizedTexts","preLocaleObj","setCSSClass","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","autoUpload","uploadButton","clearButton","listParent","createFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","localeText","Browse","Clear","Upload","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","pause","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","isBlazorTemplate","isBlazorSaveUrl","asyncSettings","sequentialUpload","formRendered","ejInstance","nodeName","isPureReactComponent","parentEle","directoryUpload","dropAreaWrapper","setDropArea","renderBrowseButton","initializeUpload","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","serverUlElement","serverRemoveIconBindEvent","checkAutoUpload","uploadButtonClick","clearButtonClick","uploadText","inputWrapper","files","clearData","files_1","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","pro","updatedClassValues","uploadStyle","newAttr","createAttribute","setAttributeNode","sequenceUpload","isFileListCreated","oldCSSClass","updatedCssClassValue","updatedOldCssClass","browseButtonClick","onSelectFiles","keyboardModule","keyActionHandler","resetForm","getCurrentMetaData","file","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","dataTransfer","clipboardData","pasteFile","kind","renderSelectedFiles","getAsFile","getSelectedFiles","allFiles","getFilesData","nameElements","selectedElement","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","getLiElement","interopAdaptor","invokeMethodAsync","removeUploadedFile","removeDirectly","FormData","currentRequestHeader","updateCustomheader","customFormDatas","updateFormData","removingEventCallback","removeCompleted","removeFailed","postRawFile","getResponse","operation","updateStatus","rootElement","statusElement","getFilesFromFolder","filesEntries","validDirectoryUpload","checkDirectoryUpload","webkitGetAsEntry","isFile","files_2","fileObj","fullPath","isDirectory","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","entries","pushFilesEntries","_loop_4","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","directory","paste","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","checkExtension","_internalRenderSelect","getFileType","webkitRelativePath","fileDetails","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","singleUpload","removedList","previousListClone","removedList_1","oldList","createParentUL","isBlank","dropFiles","extensions_1","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","errorMessage","isPreLoadFile","isPreload","createCustomfileList","fileData_1","uploadTemplateFn","templateComplier","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","iconElement","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","isSelectedFile","fileListData","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","removecanceledFile","renderFailureState","requestResponse","removeProgressbar","deleteIcon","pauseButton","retryElement","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","withCredentials","removeIconEle","spinnerEle","increment","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","animateProgressBar","uploadTemplate","isDynamic","attributes_1","isMutiple","isDisabled","fileIndex","chunkSize","chunkIndex","retryCount","sendRequest","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","updateMetaData","sendNextRequest","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","loadedSize","currentLoaded","abortIcon","sortedFileNames","sortedFilesData","sortedFileNames_1","name_4","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","uploadFileCount","getFileRead","fileCount","getFileInfo","_loop_5","this_3","File","uploadFilesRequest","getFileData","cloneFiles","chunkEnabled","name_5","spliceFiles","liIndex","beforeEventArgs","removingFiles","isLiRemoved","removingFiles_1","validUrl","_loop_6","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","FilesDirective","FilesPlugin","UploadedFilesDirective","UploadedFilesPlugin","UploaderComponent","UploaderPlugin","lineDropDown","COL_LINE_ID","COL_LINE_NAME","resizeClassList","suppress","Resize","tapped","isDblClk","widthService","columnName","getColumns","findColumn","autoFit","newarray","resizeSettings","setWidthToTable","resizeColumn","headerTable","contentTable","footerTable","headerTextClone","contentTextClone","footerTextClone","gObj","tWidth","headerDivTag","contentDivTag","footerDivTag","indentWidth","getUidByColumnField","getNormalizedColumnIndex","columnIndexByField","getColumnIndexByField","getFrozenColumns","getFrozenLeftColumnsCount","movable","getMovableColumnsCount","getFooterContent","getFooterContentTable","isFrozenGrid","getFreezeTableName","getHeaderTable","getContentTable","getHeaderContent","indentWidthClone","detailsElement","detailTemplate","childGrid","contentText","footerText","wHeader","createTable","wContent","wFooter","columnbyindex","colMaxWidth","setColumnWidth","calcTableWidth","tableWidth","contentwidth","gridElement","myTableDiv","cssText","mySubDiv","myTable","myTr","tr","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","resizeStart","getScrollBarWidth","allowGrouping","groupSettings","refreshColumnWidth","refreshStackedColumnWidth","getVisibleFrozenColumns","mtbody","getMovableContentTbody","ftbody","getFrozenLeftContentTbody","frtbody","getFrozenRightContentTbody","mtr","ftr","frTr","getFrozenMode","rowHeight","parentElementWidth","appendHelper","getPointX","minMove","minWidth","removeHelper","isJsComponent","clonedColumn","isEdit","cancelResizeAction","resizeEnd","resizing","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","allowTextWrap","setHelperHeight","colData","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","isUpdate","colWidth","subColumns","allowResizing","scrollModule","setPadding","isFrozenColResized","case","doubleTapEvent","columns_2","getStackedColumns","stackedColumn","getStackedWidth","getColumnByUid","headerRows","headerRows_1","isFrozen","getFrozenRightColumnsCount","calcPos","fLeft","parentOffset","ownerDocument","getUserAgent","timeoutHandler","branchesOfficeList","branchesOffice","hasLines","ml","processLines","il","hasBranchOffice","zl","processBranches","bl","filterDistinct","userName","showSelectedInsuranceLine","COL_USERNAME","COL_USER_FULLNAME","COL_MACRO_INSURANCE_LINE","COL_INSURANCE_LINE","COL_ZONE","COL_BRANCH_OFFICE","usersProcessLinesList","linesList","macroLineslist","updateGridData","combinedList"],"mappings":"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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAA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V,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IAC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AyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,OAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,OAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,OAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,OAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,OAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAE7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAM,MAC7C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,MAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,KAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,OAC9C96C,KAAKk3L,yBAAyBp8I,SAAS,MAAO,QAE3Ci8I,EA3ac,G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f,EAA8B6B,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAM/E7B,EAA8BsD,gBAAkB,CAC5C,IAAK,IAAK,IAAK,IAAK,IA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,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK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UsD,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,WACA,QACA,oCACA,yBACUoiM,UAAW,EAArB,OACA,WACA,gBAEQtD,iBAAkB,EAA1B,2BACUqD,IAAI,EACJniM,KAAM,EAAhB,OACA,cACA,WACA,QACA,qCACA,0BACUoiM,UAAW,EAArB,OACA,WACA,gBAEQpD,aAAc,EAAtB,2BACUmD,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,WACA,SACA,mCACA,wBACUoiM,UAAW,EAArB,OACA,WACA,gBAEQlD,YAAa,EAArB,OACA,WACA,4BACA,sBACU,QAAV,2BACU,oBAAV,IAEA,6BACA,QACQD,MAAO,EAAf,yBACUkD,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,QACA,QACA,uCACA,4BACUoiM,UAAW,EAArB,OACA,WACA,cACA,QACA,QACA,uCACA,gCAIMl1P,KAAKm0P,sBAAwB,EAAnC,cACQh9N,MAAO,EAAf,OACQq7N,UAAW,EAAnB,yBACUyC,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,WACA,0CACA,qBACUoiM,UAAW,EAArB,OACA,WACA,gBAEQz/M,UAAW,EAAnB,yBACUw/M,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,WACA,sBACY,QAAZ,yBACY,oBAAZ,IAEA,QACA,gCACA,qBACUoiM,UAAW,EAArB,OACA,WACA,gBAEQzC,SAAU,EAAlB,yBACUwC,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,WACA,qCACA,mBACUoiM,UAAW,EAArB,OACA,WACA,kBAIMl1P,KAAKo0P,uBAAyB,EAApC,cACQj9N,MAAO,EAAf,OACQ47N,eAAgB,EAAxB,0BACUkC,IAAI,EACJniM,KAAM,EAAhB,OACA,WACA,WACA,qCACA,kBACUoiM,UAAW,EAArB,OACA,WACA,gBAEQz/M,UAAW,EAAnB,0BACUw/M,IAAI,EACJniM,KAAM,EAAhB,OAEA,sBACY,QAAZ,yBACY,oBAAZ,IAEA,WACA,QACA,gCACA,qBACUoiM,UAAW,EAArB,OACA,WACA,kBAIMl1P,KAAKq0P,sBAAwB,EAAnC,cACQ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","file":"js/param.31f2c094.js","sourcesContent":["var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Products.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForBroker.vue?vue&type=style&index=0&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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', 'max', 'min', 'openOnFocus', 'placeholder', 'readonly', 'scrollTo', 'serverTimezoneOffset', 'showClearButton', 'showTodayButton', 'start', 'step', 'strictMode', 'timeFormat', 'value', 'values', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\nexport var modelProps = ['value'];\n/**\n * Represents the Essential JS 2 VueJS DateTimePicker Component.\n * ```html\n * \n * ```\n */\nvar DateTimePickerComponent = /** @class */ (function (_super) {\n __extends(DateTimePickerComponent, _super);\n function DateTimePickerComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = true;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new DateTimePicker({});\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 return _this;\n }\n DateTimePickerComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n DateTimePickerComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n DateTimePickerComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n DateTimePickerComponent.prototype.addDate = function (dates) {\n return this.ej2Instances.addDate(dates);\n };\n DateTimePickerComponent.prototype.createContent = function () {\n return this.ej2Instances.createContent();\n };\n DateTimePickerComponent.prototype.currentView = function () {\n return this.ej2Instances.currentView();\n };\n DateTimePickerComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n DateTimePickerComponent.prototype.focusOut = function () {\n return this.ej2Instances.focusOut();\n };\n DateTimePickerComponent.prototype.hide = function (e) {\n return this.ej2Instances.hide(e);\n };\n DateTimePickerComponent.prototype.navigateTo = function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n };\n DateTimePickerComponent.prototype.removeDate = function (dates) {\n return this.ej2Instances.removeDate(dates);\n };\n DateTimePickerComponent.prototype.requiredModules = function () {\n return this.ej2Instances.requiredModules();\n };\n DateTimePickerComponent.prototype.show = function (type, e) {\n return this.ej2Instances.show(type, e);\n };\n DateTimePickerComponent.prototype.toggle = function (e) {\n return this.ej2Instances.toggle(e);\n };\n DateTimePickerComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], DateTimePickerComponent);\n return DateTimePickerComponent;\n}(ComponentBase));\nexport { DateTimePickerComponent };\nexport var DateTimePickerPlugin = {\n name: 'ejs-datetimepicker',\n install: function (Vue) {\n Vue.component(DateTimePickerPlugin.name, DateTimePickerComponent);\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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['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'];\n/**\n * Represents the Essential JS 2 VueJS TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = false;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new TextBox({});\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 return _this;\n }\n TextBoxComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n TextBoxComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n TextBoxComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n TextBoxComponent.prototype.addAttributes = function (attributes) {\n return this.ej2Instances.addAttributes(attributes);\n };\n TextBoxComponent.prototype.addIcon = function (position, icons) {\n return this.ej2Instances.addIcon(position, icons);\n };\n TextBoxComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n TextBoxComponent.prototype.focusOut = function () {\n return this.ej2Instances.focusOut();\n };\n TextBoxComponent.prototype.removeAttributes = function (attributes) {\n return this.ej2Instances.removeAttributes(attributes);\n };\n TextBoxComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], TextBoxComponent);\n return TextBoxComponent;\n}(ComponentBase));\nexport { TextBoxComponent };\nexport var TextBoxPlugin = {\n name: 'ejs-textbox',\n install: function (Vue) {\n Vue.component(TextBoxPlugin.name, TextBoxComponent);\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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InsuranceLinesForm.vue?vue&type=style&index=0&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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', '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'];\n/**\n * Represents the Essential JS 2 VueJS DatePicker Component.\n * ```html\n * \n * ```\n */\nvar DatePickerComponent = /** @class */ (function (_super) {\n __extends(DatePickerComponent, _super);\n function DatePickerComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = true;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new DatePicker({});\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 return _this;\n }\n DatePickerComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n DatePickerComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n DatePickerComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n DatePickerComponent.prototype.addDate = function (dates) {\n return this.ej2Instances.addDate(dates);\n };\n DatePickerComponent.prototype.createContent = function () {\n return this.ej2Instances.createContent();\n };\n DatePickerComponent.prototype.currentView = function () {\n return this.ej2Instances.currentView();\n };\n DatePickerComponent.prototype.focusIn = function (triggerEvent) {\n return this.ej2Instances.focusIn(triggerEvent);\n };\n DatePickerComponent.prototype.focusOut = function () {\n return this.ej2Instances.focusOut();\n };\n DatePickerComponent.prototype.hide = function (event) {\n return this.ej2Instances.hide(event);\n };\n DatePickerComponent.prototype.navigateTo = function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n };\n DatePickerComponent.prototype.removeDate = function (dates) {\n return this.ej2Instances.removeDate(dates);\n };\n DatePickerComponent.prototype.requiredModules = function () {\n return this.ej2Instances.requiredModules();\n };\n DatePickerComponent.prototype.show = function (type, e) {\n return this.ej2Instances.show(type, e);\n };\n DatePickerComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], DatePickerComponent);\n return DatePickerComponent;\n}(ComponentBase));\nexport { DatePickerComponent };\nexport var DatePickerPlugin = {\n name: 'ejs-datepicker',\n install: function (Vue) {\n Vue.component(DatePickerPlugin.name, DatePickerComponent);\n }\n};\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/**\n * Function to create Float Label element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param element - the given html element.\n * @param inputElement - specify the input wrapper.\n * @param value - Value of the MultiSelect.\n * @param floatLabelType - Specify the FloatLabel Type.\n * @param placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement;\n var floatLabelElement;\n floatLinelement = createElement('span', { className: FLOATLINE });\n floatLabelElement = createElement('label', { className: FLOATTEXT });\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = SanitizeHtmlHelper.sanitize(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = SanitizeHtmlHelper.sanitize(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n * @param value - Value of the MultiSelect.\n * @param label - float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param componentWrapper - wrapper element of multiselect.\n * @param searchWrapper - search wrapper of multiselect.\n * @param inputElement - specify the input wrapper.\n * @param value - Value of the MultiSelect.\n * @param floatLabelType - Specify the FloatLabel Type.\n * @param placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n * @param value - Value of the MultiSelect.\n * @param inputElement - specify the input wrapper.\n * @param placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param componentWrapper - wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/**\n * Function to focus the Float Label element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param componentWrapper - wrapper element of multiselect.\n * @param value - Value of the MultiSelect.\n * @param floatLabelType - Specify the FloatLabel Type.\n * @param placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\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/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { attributes, setValue, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, isBlazor, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\n/* tslint:disable */\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur } from './float-label';\n/* tslint:enable */\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.isDynamicDataChange = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ;\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class':\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default:\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function () {\n var _this = this;\n var listItems;\n var mainListItems;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n document.body.appendChild(_this.popupObj.element);\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n var _this = this;\n if (this.mode === 'CheckBox' && this.itemTemplate && (isBlazor() && this.isServerRendered) &&\n this.mainData && this.mainData.length > 0) {\n setTimeout(function () {\n _this.refreshListItems(null);\n if (_this.mode === 'CheckBox') {\n _this.removeFocus();\n }\n _this.notify('reOrder', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', e: _this });\n }, this.mainData.length < 100 ? 100 : this.mainData.length);\n }\n else {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-multiselectable': 'true',\n 'aria-activedescendant': 'null',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n var disableStatus = (this.inputElement.disabled) ? true : false;\n attributes(this.inputElement, this.getAriaAttributes());\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements;\n elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n this.removeValue(value, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n var proxy = this;\n var valuecheck = [];\n if (isBlazor() && this.isServerRendered && this.isDynamicDataChange && this.value !== null && this.value.length > 0) {\n var items = [];\n for (var k = 0; k < this.value.length; k++) {\n var itemsData = this.getDataByValue(this.value[k]);\n if (itemsData) {\n // tslint:disable-next-line\n items.push(itemsData[this.fields.value]); // remove the condition for hybrid\n }\n }\n if (items.length === 0) {\n this.setProperties({ 'value': null });\n }\n }\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n this.updateActionList(ulElement, list, e);\n if (isBlazor() && this.isServerRendered && this.allowFiltering && this.mode === 'CheckBox') {\n this.removeFocus();\n }\n if (isBlazor() && this.isServerRendered && this.isDynamicDataChange && this.value && this.value.length > 0) {\n this.updateVal(this.value, null, 'value');\n this.addValidInputClass();\n this.isDynamicDataChange = false;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering &&\n !(isBlazor() && this.isServerRendered)) {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (!isNullOrUndefined(this.mainData) && this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && this.inputElement.value !== '') ||\n this.mode === 'CheckBox')) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown();\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n }\n else {\n this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.firstElementChild.getAttribute('aria-checked');\n if (isNullOrUndefined(ariaValue) || ariaValue === 'false') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup();\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.KeyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\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 * @return {void}.\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n setValue(field.value, value, dataItem);\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = [this.inputElement.value];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup();\n }\n else {\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlur = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true, false, true, true);\n this.hidePopup();\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem;\n previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n ;\n MultiSelect.prototype.pageDownSelection = function (steps) {\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem;\n previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup();\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup();\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n this.refreshPopup();\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains('e-input-filter')\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n this.list.focus();\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains('e-input-filter')) {\n e.preventDefault();\n this.keyAction = true;\n this.list.focus();\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow \n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow \n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n target.classList.contains('e-check') ? this.selectAllItem(false, e, li) : this.selectAllItem(true, e, li);\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = void 0;\n list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var elements;\n var selectedElem;\n var temp;\n elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup();\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = this.placeholder;\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n if (isBlazor() && _this.isServerRendered) {\n var removedValues = [].concat([], removeVal);\n _this.setProperties({ value: removedValues.length === 0 ? null : removedValues }, true);\n }\n else {\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n }\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.notify('updatelist', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', li: element_1, e: eve });\n attributes(_this.inputElement, { 'aria-activedescendant': element_1.id });\n if ((_this.value && _this.value.length !== _this.mainData.length)\n && (_this.mode === 'CheckBox' && _this.showSelectAll && !(_this.isSelectAll || isClearAll))) {\n _this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: 'uncheck' });\n }\n }\n if (_this.hideSelectedItem && _this.fields.groupBy) {\n _this.hideGroupItem(value);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (isBlazor() && _this.isServerRendered && (isNullOrUndefined(_this.value) || _this.value.length === 0)) {\n _this.updatedataValueItems(eve);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'true');\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements;\n var closeElements;\n elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (multiselectTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = (isBlazor() && this.isServerRendered) ? JSON.parse(JSON.stringify(this.getDataByValue(value)))\n : this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // tslint:disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, false, false, false);\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (eventArgs.setClass && typeof eventArgs.setClass === 'string' && (isBlazor() && _this.isServerRendered)) {\n addClass([chip], eventArgs.setClass);\n }\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (_this.itemTemplate && (isBlazor() && _this.isServerRendered)) {\n setTimeout(function () { _this.mainList = _this.ulElement; }, 0);\n }\n else if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // tslint:disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // tslint:disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.ClearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n if (this.value === null && isBlazor() && this.isServerRendered) {\n break;\n }\n }\n }\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ? null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.KeyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlur, this);\n EventHandler.add(this.componentWrapper, 'mousemove', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.ClearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup();\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = void 0;\n liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n ;\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n this.hiddenElement.innerHTML = '';\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var listValue = this.findListElement(((!isNullOrUndefined(this.mainList)) ? this.mainList : this.ulElement), 'li', 'data-value', this.value[index]);\n if (!(isBlazor() && this.isServerRendered) && isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n this.hiddenElement.innerHTML += '';\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var textField = void 0;\n var valueField = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n addClass([li], HIDE_LIST);\n }\n };\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && this.mainList.childElementCount < this.ulElement.childElementCount) {\n this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n ;\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n if (isBlazor() && _this.isServerRendered) {\n _this.checkPlaceholderSize();\n _this.makeTextBoxEmpty();\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n if (isBlazor() && this.isServerRendered && this.value && this.list &&\n (this.value.length === this.list.querySelectorAll('li.e-list-item').length ||\n this.value.length === this.maximumSelectionLength)) {\n this.updatedataValueItems(e);\n this.checkPlaceholderSize();\n }\n if (isBlazor() && this.isServerRendered) {\n this.checkPlaceholderSize();\n this.makeTextBoxEmpty();\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n selectedItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n selectItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n ;\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n ;\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n ;\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n ;\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'));\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox') {\n var ariaCheck = element.firstElementChild.getAttribute('aria-checked');\n if (ariaCheck === 'false' || isNullOrUndefined(ariaCheck)) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n }\n else {\n e.preventDefault();\n }\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n ;\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n ;\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n * @returns void.\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n if (this.overAllClear.style.display !== 'none') {\n this.spinnerElement = this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n * @returns void.\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\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 MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var compiledString = compile(remainContent);\n var totalCompiledString = compile(l10n.getConstant('totalCountTemplate'));\n // tslint:disable-next-line\n var remainCompildTemp = compiledString({ 'count': this.value.length }, this, 'overflowCountTemplate', null, !this.isStringTemplate, null, raminElement);\n if (remainCompildTemp && remainCompildTemp.length > 0) {\n raminElement.appendChild(remainCompildTemp[0]);\n }\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = this.viewWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, compiledString, totalCompiledString, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, compiledString, totalCompiledString);\n }\n }\n else {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, compiledString, totalCompiledString, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n // tslint:disable-next-line\n var remainTemp = compiledString({ 'count': remaining }, this, 'overflowCountTemplate', null, !this.isStringTemplate, null, raminElement);\n // tslint:disable-next-line\n var totalTemp = totalCompiledString({ 'count': remaining }, this, 'totalCountTemplate', null, !this.isStringTemplate, null, raminElement);\n raminElement.appendChild((viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ?\n remainTemp && remainTemp[0] : totalTemp && totalTemp[0]);\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, compiledString, totalCompiledString) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, compiledString, totalCompiledString, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.KeyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlur);\n EventHandler.remove(this.componentWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n EventHandler.remove(this.overAllClear, 'mousedown', this.ClearAll);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n if (this.value && this.value.length && this.isPopupOpen() && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? event.target : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n state ? target.classList.add('e-active') : target.classList.remove('e-active');\n target.classList.add('e-item-focus');\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (!(isBlazor() && _this.isServerRendered)) {\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }\n }, 0);\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length && !(isBlazor() && this.isServerRendered)) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ;\n /**\n * Dynamically change the value of properties.\n * @private\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\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 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n var msProps = void 0;\n msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n break;\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect 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 * @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 * @return {void}.\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n * @returns void\n */\n MultiSelect.prototype.hidePopup = function () {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n * @returns void\n */\n MultiSelect.prototype.showPopup = function () {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if ((isBlazor() && _this.isServerRendered) && _this.itemTemplate) {\n _this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, false);\n if (_this.mode !== 'CheckBox' && _this.list) {\n _this.refreshSelection();\n }\n }\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown();\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n * @returns void\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n ;\n /**\n * Allows you to clear the selected values from the Multiselect component.\n * @returns void\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n (opt.getAttribute('value')) ? valueCol.push(opt.getAttribute('value')) : textCol += (opt.text + this.delimiterChar);\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n this.renderPopup();\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}\n */\n MultiSelect.prototype.destroy = function () {\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'aria-placeholder', 'placeholder'];\n var length = temp.length;\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n if (this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n };\n ;\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nexport var properties = ['actionFailureTemplate', 'allowCustomValue', 'allowFiltering', 'changeOnBlur', 'closePopupOnSelect', 'cssClass', 'dataSource', 'delimiterChar', 'enableGroupCheckBox', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'enableSelectionOrder', 'enabled', 'fields', 'filterBarPlaceholder', 'filterType', 'floatLabelType', 'footerTemplate', 'groupTemplate', 'headerTemplate', 'hideSelectedItem', 'htmlAttributes', 'ignoreAccent', 'ignoreCase', 'itemTemplate', 'locale', 'maximumSelectionLength', 'mode', 'noRecordsTemplate', 'openOnClick', 'placeholder', 'popupHeight', 'popupWidth', 'query', 'readonly', 'selectAllText', 'showClearButton', 'showDropDownIcon', 'showSelectAll', 'sortOrder', 'text', 'unSelectAllText', 'value', 'valueTemplate', 'width', 'zIndex', 'actionBegin', 'actionComplete', 'actionFailure', 'beforeOpen', 'blur', 'change', 'chipSelection', 'close', 'created', 'customValueSelection', 'dataBound', 'destroyed', 'filtering', 'focus', 'open', 'removed', 'removing', 'select', 'selectedAll', 'tagging'];\nexport var modelProps = ['value'];\n/**\n * MultiSelect component allows the user to select a value from the predefined list of values.\n * ```html\n * \n * ```\n */\nvar MultiSelectComponent = /** @class */ (function (_super) {\n __extends(MultiSelectComponent, _super);\n function MultiSelectComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = true;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new MultiSelect({});\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 return _this;\n }\n MultiSelectComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n MultiSelectComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n MultiSelectComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n MultiSelectComponent.prototype.addItem = function (items, itemIndex) {\n return this.ej2Instances.addItem(items, itemIndex);\n };\n MultiSelectComponent.prototype.clear = function () {\n return this.ej2Instances.clear();\n };\n MultiSelectComponent.prototype.filter = function (dataSource, query, fields) {\n return this.ej2Instances.filter(dataSource, query, fields);\n };\n MultiSelectComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n MultiSelectComponent.prototype.focusOut = function () {\n return this.ej2Instances.focusOut();\n };\n MultiSelectComponent.prototype.getDataByValue = function (value) {\n return this.ej2Instances.getDataByValue(value);\n };\n MultiSelectComponent.prototype.getItems = function () {\n return this.ej2Instances.getItems();\n };\n MultiSelectComponent.prototype.hidePopup = function () {\n return this.ej2Instances.hidePopup();\n };\n MultiSelectComponent.prototype.hideSpinner = function () {\n return this.ej2Instances.hideSpinner();\n };\n MultiSelectComponent.prototype.requiredModules = function () {\n return this.ej2Instances.requiredModules();\n };\n MultiSelectComponent.prototype.selectAll = function (state) {\n return this.ej2Instances.selectAll(state);\n };\n MultiSelectComponent.prototype.showPopup = function () {\n return this.ej2Instances.showPopup();\n };\n MultiSelectComponent.prototype.showSpinner = function () {\n return this.ej2Instances.showSpinner();\n };\n MultiSelectComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], MultiSelectComponent);\n return MultiSelectComponent;\n}(ComponentBase));\nexport { MultiSelectComponent };\nexport var MultiSelectPlugin = {\n name: 'ejs-multiselect',\n install: function (Vue) {\n Vue.component(MultiSelectPlugin.name, MultiSelectComponent);\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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Chart.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticStyle:{\"text-align\":\"left\",\"z-index\":\"2000 !important\"},attrs:{\"id\":\"dialogNotifications\"}},[_c('notifications-form',{attrs:{\"showing\":_vm.dlgShow,\"formAction\":_vm.formAction,\"isMobile\":_vm.isMobile,\"formData\":_vm.rowData},on:{\"formClosed\":_vm.hideForm}})],1),_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-8 offset-xl-2\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"load\":_vm.onGridLoad,\"toolbarClick\":_vm.toolbar_click,\"actionBegin\":_vm.onActionBegin,\"actionComplete\":_vm.onActionComplete,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.gridData,\"query\":_vm.query,\"allowSorting\":true,\"allowSelection\":true,\"allowExcelExport\":true,\"selectionSettings\":_vm.selectionSettings,\"allowFiltering\":true,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"editSettings\":_vm.editSettings,\"filterSettings\":_vm.filterSettings,\"queryCellInfo\":_vm.setStyle,\"locale\":\"es-CO\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id Karin\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"Clip\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Notificación\",\"filter\":\"Menu\",\"width\":200,\"clipMode\":\"EllipsisWithTooltip\",\"required\":true}}),_c('e-column',{attrs:{\"field\":\"isActive\",\"headerText\":\"isActive\",\"width\":90,\"required\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"active\",\"headerText\":\"Activa\",\"width\":90,\"filter\":\"CheckBox\",\"required\":true,\"visible\":\"true\"}}),_c('e-column',{attrs:{\"headerText\":\"Acciones\",\"AllowFiltering\":\"false\",\"width\":100,\"commands\":_vm.commands}})],1)],1)],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Notificaciones\")])])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"notifications-form\",\"target\":\"#dialogNotifications\",\"isModal\":true,\"visible\":_vm.showing,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"beforeOpen\":_vm.beforeDialogOpen,\"z-index\":\"1003\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-2\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"e-text\",class:{ 'e-warning': _vm.hasError('id') }},[_vm._v(\"Id Karin\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.id),expression:\"m_data.id\"}],staticClass:\"e-input\",attrs:{\"id\":\"id\",\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":(_vm.m_data.id)},on:{\"blur\":function($event){return _vm.validateField('id')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"id\", $event.target.value)}}})])]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-8\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Nombre Notificación\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.name),expression:\"m_data.name\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('name') },attrs:{\"id\":\"name\",\"type\":\"text\",\"required\":\"\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Nombre Notificación\"},domProps:{\"value\":(_vm.m_data.name)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"name\", $event.target.value)},function($event){return _vm.validateField('name')}],\"blur\":function($event){return _vm.validateField('name')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('name') },domProps:{\"textContent\":_vm._s(_vm.m_errors.name)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-2 control-section switch-control\"},[_c('div',{style:(_vm.isMobile ? 'margin-top: 25px;' : 'margin-top: 30px;')},[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isActive\",\"checked\":_vm.m_data.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_data.isActive),callback:function ($$v) {_vm.$set(_vm.m_data, \"isActive\", $$v)},expression:\"m_data.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isActive\"}},[_vm._v(_vm._s(_vm.m_data.isActive ? \"Activo\" : \"Inactivo\"))])],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\"},[_c('ejs-tab',{ref:\"tabNotif\",attrs:{\"id\":\"element\",\"selecting\":_vm.tabSelecting}},[_c('div',{staticClass:\"e-tab-header\"},[_c('div',[_vm._v(\"Notificación\")]),_c('div',[_vm._v(\"Previsualización\")])]),_c('div',{staticClass:\"e-content\"},[_c('div',[_c('ejs-textbox',{attrs:{\"name\":\"message\",\"cssClass\":_vm.hasError('message') ? 'e-warning' : '',\"multiline\":true,\"rows\":\"10\",\"placeholder\":\"HTML o mensaje de notificación\",\"readonly\":_vm.isFormReadOnly},on:{\"input\":function($event){return _vm.validateField('message')},\"blur\":function($event){return _vm.validateField('message')}},model:{value:(_vm.m_data.message),callback:function ($$v) {_vm.$set(_vm.m_data, \"message\", $$v)},expression:\"m_data.message\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('message') },domProps:{\"textContent\":_vm._s(_vm.m_errors.message)}})],1),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.m_data.message)}})])])],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Estados de Notificación\")]),_c('div',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"id\":\"hourGridContainer\"}},[_c('ejs-grid',{ref:\"customStatesGrid\",attrs:{\"id\":\"customStatesGrid\",\"dataSource\":_vm.gridDataSource,\"editSettings\":_vm.editSettings,\"toolbar\":_vm.gridToolbar,\"actionBegin\":_vm.grid_ActionBegin,\"actionComplete\":_vm.grid_ActionComplete,\"toolbarClick\":_vm.grid_toolbarClick,\"queryCellInfo\":_vm.setStyle,\"locale\":\"es-CO\",\"width\":\"100%\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"visible\":false,\"headerText\":\"Id\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"notificationId\",\"visible\":false,\"headerText\":\"Id Notificacion\"}}),_c('e-column',{attrs:{\"field\":\"requestStateId\",\"headerText\":\"Estado\",\"width\":120,\"editType\":\"dropdownedit\",\"edit\":_vm.stateParams}}),_c('e-column',{attrs:{\"field\":\"requestSubStateId\",\"headerText\":\"Sub-Estado\",\"width\":150,\"editType\":\"dropdownedit\",\"edit\":_vm.subStateParams}}),_c('e-column',{attrs:{\"field\":\"alternateText\",\"headerText\":\"Texto Adicional\",\"width\":150,\"editType\":\"text\"}})],1)],1),_c('span',{staticClass:\"help e-text e-info small\"},[_vm._v(\"Determina los estados de la solicitud que aplican para ser enviados en los puntos de notificación del sistema\")]),_c('br'),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('notificationStates') },domProps:{\"textContent\":_vm._s(_vm.m_errors.notificationStates)}})],1)])]),_c('div',{staticClass:\"row\"}),(_vm.showActionButtons)?_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 \"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),(_vm.showDeleteButton)?_c('ejs-button',{attrs:{\"isDanger\":true,\"iconCss\":\"e-icons icon-trash inline-command\",\"cssClass\":\"e-flat e-danger e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateDelete($event)}}},[_vm._v(\"Desactivar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],1)])]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NotificationsForm.vue?vue&type=template&id=5606d9b4&scoped=true&\"\nimport script from \"./NotificationsForm.vue?vue&type=script&lang=js&\"\nexport * from \"./NotificationsForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NotificationsForm.vue?vue&type=style&index=0&id=5606d9b4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5606d9b4\",\n null\n \n)\n\nexport default component.exports","\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Notifications.vue?vue&type=template&id=23c45850&\"\nimport script from \"./Notifications.vue?vue&type=script&lang=js&\"\nexport * from \"./Notifications.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Notifications.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReassignedForm.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsForm.vue?vue&type=style&index=0&id=5606d9b4&scoped=true&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersProcessLinesForm.vue?vue&type=style&index=0&lang=css&\"","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) {\n var state = enforceInternalState(result);\n state.sticky = true;\n }\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRequest.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReassignedBrokerForm.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileComponent.vue?vue&type=style&index=0&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, Property, Event, closest, Collection, Complex, attributes, detach } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_HORIZONTAL = 'e-horizontal';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
\n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n * @param options - Specifies Tab model properties as options.\n * @param element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.resizeContext = _this.refreshActElePosition.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n * @returns void\n */\n Tab.prototype.destroy = function () {\n var _this = this;\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n }\n this.unWireEvents();\n ['role', 'aria-disabled', 'aria-activedescendant', 'tabindex', 'aria-orientation'].forEach(function (val) {\n _this.element.removeAttribute(val);\n });\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n */\n Tab.prototype.refresh = function () {\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerRendered) {\n _super.prototype.refresh.call(this);\n }\n else if (this.isServerRendered && this.loadOn !== 'Dynamic') {\n this.setActiveBorder();\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n * @private\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { role: 'tablist', 'aria-disabled': 'false', 'aria-activedescendant': '' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n * @private\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n };\n Tab.prototype.renderContainer = function () {\n if (this.isServerRendered) {\n this.isTemplate = false;\n return;\n }\n var ele = this.element;\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n var scrCnt = void 0;\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.serverItemsChanged = function () {\n this.enableAnimation = false;\n this.setActive(this.selectedItem, true);\n if (this.loadOn !== 'Dynamic' && !isNOU(this.cntEle)) {\n var itemCollection = [].slice.call(this.cntEle.children);\n var content_1 = CLS_CONTENT + this.tabId + '_' + this.selectedItem;\n itemCollection.forEach(function (item) {\n if (item.classList.contains(CLS_ACTIVE) && item.id !== content_1) {\n item.classList.remove(CLS_ACTIVE);\n }\n if (item.id === content_1) {\n item.classList.add(CLS_ACTIVE);\n }\n });\n this.prevIndex = this.selectedItem;\n this.triggerAnimation(CLS_ITEM + this.tabId + '_' + this.selectedItem, false);\n }\n this.enableAnimation = true;\n };\n Tab.prototype.headerReady = function () {\n this.initRender = true;\n this.hdrEle = this.getTabHeader();\n this.setOrientation(this.headerPlacement, this.hdrEle);\n if (!isNOU(this.hdrEle)) {\n this.tbObj = (this.hdrEle && this.hdrEle.ej2_instances[0]);\n }\n this.tbObj.clicked = this.clickHandler.bind(this);\n this.tbObj.on('onItemsChanged', this.serverItemsChanged.bind(this));\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n var scrollCnt = void 0;\n this.bdrLine = select('.' + CLS_INDICATOR + '.' + CLS_IGNORE, this.element);\n scrollCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrollCnt)) {\n scrollCnt.insertBefore(this.bdrLine, scrollCnt.firstElementChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n if (this.loadOn === 'Demand') {\n var id = this.setActiveContent();\n this.triggerAnimation(id, false);\n }\n this.initRender = false;\n this.renderComplete();\n };\n Tab.prototype.setActiveContent = function () {\n var id = CLS_ITEM + this.tabId + '_' + this.selectedItem;\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (!isNOU(item)) {\n item.classList.add(CLS_ACTIVE);\n }\n return id;\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index,\n attrs: { role: 'tab', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-selected': 'false' }\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', { className: CLS_WRAP, innerHTML: cont, attrs: { tabIndex: '-1' } });\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { 'aria-label': 'tab-header' });\n this.updateOrientationAttribute();\n this.setCloseButton(this.showCloseButton);\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n contents.item(i).className += CLS_ITEM;\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n _this.lastIndex = ((tbCount === 0) ? i : ((_this.isReplace) ? (index + i) : (_this.lastIndex + 1)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: '-1' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, role: 'tab', 'aria-selected': 'false'\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n (this.isIconAlone) ? this.element.classList.add(CLS_ICON_TAB) : this.element.classList.remove(CLS_ICON_TAB);\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.updateOrientationAttribute = function () {\n attributes(this.element, { 'aria-orientation': (this.isVertical() ? 'vertical' : 'horizontal') });\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n (val === true) ? trg.classList.add(CLS_CLOSE_SHOW) : trg.classList.remove(CLS_CLOSE_SHOW);\n this.tbObj.refreshOverflow();\n this.refreshActElePosition();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var newCnt;\n if (!this.isServerRendered || (this.isServerRendered && this.loadOn !== 'Dynamic')) {\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n }\n else {\n newCnt = this.cntEle.firstElementChild;\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n if (this.initRender || value === false || this.animation === {} || isNOU(this.animation)) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.select(trgIndex);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n }\n this.addVerticalClass();\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.serverChangeOrientation = function (newProp, oldProp) {\n this.setOrientation(newProp, this.hdrEle);\n removeClass([this.element], [CLS_VTAB]);\n var newValue = newProp === 'Left' || newProp === 'Right';\n var oldValue = oldProp === 'Left' || oldProp === 'Right';\n if (newValue !== oldValue) {\n this.changeToolbarOrientation();\n }\n if (this.isVertical()) {\n addClass([this.element], [CLS_VTAB]);\n }\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n this.clearTemplate(['content']);\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n ele.classList.remove(CLS_ACTIVE);\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var bar;\n var scrollCnt;\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (trg === null) {\n return;\n }\n if (this.isServerRendered && trg.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(trg);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n bar = select('.' + CLS_INDICATOR, trgHdrEle);\n scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (this.isServerRendered && trg) {\n value = parseInt(trg.getAttribute('data-index'), 10);\n }\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n var prev = this.tbItem[this.prevIndex];\n if (!isNOU(prev)) {\n prev.removeAttribute('aria-controls');\n }\n attributes(trg, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n attributes(this.element, { 'aria-activedescendant': id });\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else if (!this.isServerRendered || (this.isServerRendered && this.loadOn === 'Init')) {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n trg.firstElementChild.focus();\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed\n };\n this.trigger('selected', eventArg);\n }\n };\n Tab.prototype.contentReady = function () {\n var id = this.setActiveContent();\n this.triggerAnimation(id, this.enableAnimation);\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.wireEvents = function () {\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle)) {\n if (!isNOU(this.touchModule)) {\n this.touchModule.destroy();\n }\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (this.isServerRendered && !isNOU(trgParent)) {\n if (parseInt(trgParent.getAttribute('data-index'), 10) !== this.selectedItem) {\n this.select(trgIndex);\n }\n }\n else if (!isNOU(trgParent) && (trgIndex !== this.selectedItem || trgIndex !== this.prevIndex)) {\n this.select(trgIndex, args.originalEvent);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (e.originalEvent) {\n e.originalEvent.stopPropagation();\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n }\n }\n this.isSwipeed = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', '-1');\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n actEle.children.item(0).setAttribute('tabindex', '0');\n break;\n case 'moveLeft':\n case 'moveRight':\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshActElePosition = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle)) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + index, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + index, this.element);\n if (property === 'header' || property === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (property === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (property === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (property === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (property === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n // tslint:disable-next-line:no-any\n if (this.isRect) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n }\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns void.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', '-1');\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n * @param {TabItemsModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns void.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n }\n else {\n var itemsCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) ||\n isNOU(textValue_1) || (textValue_1.length === 0) && isNOU(item.header.iconCss))) {\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n }\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n * @param {number} index - Index of target item that is going to be removed.\n * @returns void.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n _this.tbObj.removeItems(index);\n _this.items.splice(index, 1);\n _this.itemIndexArray.splice(index, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (trg.classList.contains(CLS_ACTIVE)) {\n // tslint:disable-next-line:max-line-length\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns void.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n if (!this.isServerRendered && this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @returns void.\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', '-1');\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args);\n }\n });\n }\n else {\n this.selectingContent(args);\n }\n };\n Tab.prototype.selectingContent = function (args) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP)) {\n this.setActive(this.popupHandler(this.tbItem[args]));\n }\n else {\n this.setActive(args);\n }\n }\n else {\n this.setActive(0);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args));\n }\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns void.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\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 * @param {TabModel} newProp\n * @param {TabModel} oldProp\n * @returns void\n * @private\n */\n Tab.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 setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '') {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n break;\n case 'items':\n if (!this.isServerRendered) {\n this.evalOnPropertyChangeItems(newProp, oldProp);\n }\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'selectedItem':\n if (!this.isServerRendered) {\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n }\n break;\n case 'headerPlacement':\n if (this.isServerRendered) {\n this.serverChangeOrientation(newProp.headerPlacement, oldProp.headerPlacement);\n }\n else {\n this.changeOrientation(newProp.headerPlacement);\n }\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActElePosition();\n break;\n case 'heightAdjustMode':\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n this.select(this.selectedItem);\n }\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n }\n }\n };\n Tab.prototype.refreshActiveTab = function () {\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var txtWrap = void 0;\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var wrapAtt = (item.disabled) ? {} : { tabIndex: '-1' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var id = element.id;\n var num = (id.indexOf('_'));\n var index = parseInt(id.substring(num + 1), 10);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index,\n attrs: {\n role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index,\n 'aria-disabled': 'false', 'aria-selected': 'true'\n }\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var wrap = this.createElement('div', { className: CLS_WRAP, innerHTML: conte, attrs: { tabIndex: '-1' } });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar TabItemsDirective = /** @class */ (function (_super) {\n __extends(TabItemsDirective, _super);\n function TabItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabItemsDirective.prototype.render = function () {\n return;\n };\n TabItemsDirective = __decorate([\n EJComponentDecorator({})\n ], TabItemsDirective);\n return TabItemsDirective;\n}(Vue));\nexport { TabItemsDirective };\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 */\nvar TabItemDirective = /** @class */ (function (_super) {\n __extends(TabItemDirective, _super);\n function TabItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabItemDirective.prototype.render = function () {\n return;\n };\n TabItemDirective = __decorate([\n EJComponentDecorator({})\n ], TabItemDirective);\n return TabItemDirective;\n}(Vue));\nexport { TabItemDirective };\nexport var TabItemPlugin = {\n name: 'e-tabitem',\n install: function (Vue) {\n Vue.component(TabItemPlugin.name, TabItemDirective);\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 { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { TabItemsDirective, TabItemDirective, TabItemsPlugin, TabItemPlugin } from './items.directive';\nexport var properties = ['animation', 'cssClass', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'headerPlacement', 'height', 'heightAdjustMode', 'items', 'loadOn', 'locale', 'overflowMode', 'scrollStep', 'selectedItem', 'showCloseButton', 'width', 'added', 'adding', 'created', 'destroyed', 'removed', 'removing', 'selected', 'selecting'];\nexport var modelProps = [];\n/**\n * Represents the VueJS Tab Component.\n * ```html\n * \n * ```\n */\nvar TabComponent = /** @class */ (function (_super) {\n __extends(TabComponent, _super);\n function TabComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = false;\n _this.tagMapper = { \"e-tabitems\": \"e-tabitem\" };\n _this.tagNameMapper = { \"e-tabitems\": \"e-items\" };\n _this.ej2Instances = new Tab({});\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n TabComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n TabComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n TabComponent.prototype.addTab = function (items, index) {\n return this.ej2Instances.addTab(items, index);\n };\n TabComponent.prototype.disable = function (value) {\n return this.ej2Instances.disable(value);\n };\n TabComponent.prototype.enableTab = function (index, value) {\n return this.ej2Instances.enableTab(index, value);\n };\n TabComponent.prototype.hideTab = function (index, value) {\n return this.ej2Instances.hideTab(index, value);\n };\n TabComponent.prototype.refresh = function () {\n return this.ej2Instances.refresh();\n };\n TabComponent.prototype.refreshActiveTab = function () {\n return this.ej2Instances.refreshActiveTab();\n };\n TabComponent.prototype.removeTab = function (index) {\n return this.ej2Instances.removeTab(index);\n };\n TabComponent.prototype.select = function (args, event) {\n return this.ej2Instances.select(args, event);\n };\n TabComponent = __decorate([\n EJComponentDecorator({\n props: properties\n })\n ], TabComponent);\n return TabComponent;\n}(ComponentBase));\nexport { TabComponent };\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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MacroLinesForm.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForAnalyst.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForm.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Renovation.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{class:{ visible: _vm.isVisible == true, hidden: _vm.isVisible == false }}),_c('div',{staticStyle:{\"text-align\":\"left\",\"z-index\":\"2000 !important\"},attrs:{\"id\":\"dialogMacroLines\"}},[_c('macro-lines-form',{attrs:{\"showing\":_vm.dlgShow,\"formAction\":_vm.formAction,\"isMobile\":_vm.isMobile,\"formData\":_vm.rowData},on:{\"formClosed\":_vm.hideForm}})],1),_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-8 offset-xl-2\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"load\":_vm.onGridLoad,\"toolbarClick\":_vm.toolbar_click,\"actionBegin\":_vm.onActionBegin,\"actionComplete\":_vm.onActionComplete,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.gridData,\"query\":_vm.query,\"allowSorting\":true,\"allowSelection\":true,\"allowExcelExport\":true,\"selectionSettings\":_vm.selectionSettings,\"allowFiltering\":true,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"editSettings\":_vm.editSettings,\"filterSettings\":_vm.filterSettings,\"queryCellInfo\":_vm.setStyle,\"locale\":\"es-CO\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id Karin\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"Clip\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"localCode\",\"headerText\":\"Código Core\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\",\"isPrimaryKey\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Macro Ramo\",\"filter\":\"Menu\",\"width\":200,\"clipMode\":\"EllipsisWithTooltip\",\"required\":true}}),_c('e-column',{attrs:{\"field\":\"isActive\",\"headerText\":\"isActive\",\"width\":90,\"required\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"active\",\"headerText\":\"Activa\",\"width\":90,\"filter\":\"CheckBox\",\"required\":true,\"visible\":\"true\"}}),_c('e-column',{attrs:{\"headerText\":\"Acciones\",\"AllowFiltering\":\"false\",\"width\":100,\"commands\":_vm.commands}})],1)],1)],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Macro Ramos\")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"macro-lines-form\",\"target\":\"#dialogMacroLines\",\"isModal\":true,\"visible\":_vm.showing,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"z-index\":\"1003\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-12\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"e-text\",class:{ 'e-warning': _vm.hasError('id') }},[_vm._v(\"Id Karin\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.id),expression:\"m_data.id\"}],staticClass:\"e-input\",attrs:{\"id\":\"id\",\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":(_vm.m_data.id)},on:{\"blur\":function($event){return _vm.validateField('id')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"id\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-12\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Código Core\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.localCode),expression:\"m_data.localCode\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('localCode') },attrs:{\"id\":\"localCode\",\"name\":\"localCode\",\"type\":\"text\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Código Core\"},domProps:{\"value\":(_vm.m_data.localCode)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"localCode\", $event.target.value)},function($event){return _vm.validateField('localCode')}],\"blur\":function($event){return _vm.validateField('localCode')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('localCode') },domProps:{\"textContent\":_vm._s(_vm.m_errors.localCode)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-8 col-md-12\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Nombre Macro Ramo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.name),expression:\"m_data.name\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('name') },attrs:{\"id\":\"name\",\"type\":\"text\",\"required\":\"\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Nombre Macro Ramo\"},domProps:{\"value\":(_vm.m_data.name)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"name\", $event.target.value)},function($event){return _vm.validateField('name')}],\"blur\":function($event){return _vm.validateField('name')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('name') },domProps:{\"textContent\":_vm._s(_vm.m_errors.name)}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-12 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isActive\",\"checked\":_vm.m_data.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_data.isActive),callback:function ($$v) {_vm.$set(_vm.m_data, \"isActive\", $$v)},expression:\"m_data.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isActive\"}},[_vm._v(_vm._s(_vm.m_data.isActive ? \"Activo\" : \"Inactivo\"))])],1)])]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-6\"})]),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 \"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MacroLinesForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MacroLinesForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MacroLinesForm.vue?vue&type=template&id=5215b549&\"\nimport script from \"./MacroLinesForm.vue?vue&type=script&lang=js&\"\nexport * from \"./MacroLinesForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MacroLinesForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MacroLines.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MacroLines.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MacroLines.vue?vue&type=template&id=64ff84f5&\"\nimport script from \"./MacroLines.vue?vue&type=script&lang=js&\"\nexport * from \"./MacroLines.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MacroLines.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"container-fluid\"},[_vm._m(0),_c('div',{staticClass:\"control-section e-control\"},[_c('div',[_vm._m(1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Fecha corte\")]),_c('ejs-datepicker',{attrs:{\"id\":\"toDate\",\"placeholder\":\"Fecha corte\",\"required\":\"\",\"format\":_vm.dateFormat,\"strictMode\":true},model:{value:(_vm.m_filter.toDate),callback:function ($$v) {_vm.$set(_vm.m_filter, \"toDate\", $$v)},expression:\"m_filter.toDate\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"radicationYear\"}},[_vm._v(\"Año Radicación\")]),_c('ejs-dropdownlist',{attrs:{\"id\":\"radicationYear\",\"dataSource\":_vm.yearsList,\"fields\":_vm.fields,\"placeholder\":\"Año\",\"cssClass\":_vm.hasError('radicationYear') ? 'e-warning' : ''},on:{\"blur\":function($event){return _vm.validateField('radicationYear')},\"change\":function($event){return _vm.validateField('radicationYear')}},model:{value:(_vm.m_filter.radicationYear),callback:function ($$v) {_vm.$set(_vm.m_filter, \"radicationYear\", $$v)},expression:\"m_filter.radicationYear\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('radicationYear') },domProps:{\"textContent\":_vm._s(_vm.m_errors.radicationYear)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"requestTypes\"}},[_vm._v(\"Clase Requerimiento\")]),_c('ejs-multiselect',{attrs:{\"id\":\"requestTypes\",\"dataSource\":_vm.requestTypesList,\"placeholder\":\"Clase Requerimiento\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Clase Requerimiento\"},model:{value:(_vm.m_filter.requestTypesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"requestTypesList\", $$v)},expression:\"m_filter.requestTypesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"complexities\"}},[_vm._v(\"Complejidad\")]),_c('ejs-multiselect',{attrs:{\"id\":\"complexities\",\"dataSource\":_vm.complexityList,\"placeholder\":\"Complejidad\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Complejidad\"},model:{value:(_vm.m_filter.complexitiesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"complexitiesList\", $$v)},expression:\"m_filter.complexitiesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"zones\"}},[_vm._v(\"Zona\")]),_c('ejs-multiselect',{attrs:{\"id\":\"zones\",\"dataSource\":_vm.zonesList,\"placeholder\":\"Zona\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Zona\"},model:{value:(_vm.m_filter.zonesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"zonesList\", $$v)},expression:\"m_filter.zonesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"branchOffices\"}},[_vm._v(\"Sucursal\")]),_c('ejs-multiselect',{attrs:{\"id\":\"branchOffices\",\"dataSource\":_vm.branchOfficesList,\"placeholder\":\"Sucursal\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Sucursal\"},model:{value:(_vm.m_filter.branchOfficesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"branchOfficesList\", $$v)},expression:\"m_filter.branchOfficesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"macroLines\"}},[_vm._v(\"Macro Ramo\")]),_c('ejs-multiselect',{attrs:{\"id\":\"macroLines\",\"dataSource\":_vm.macroLinesList,\"placeholder\":\"Macro Ramo\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Macro Ramo\"},model:{value:(_vm.m_filter.macroLinesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"macroLinesList\", $$v)},expression:\"m_filter.macroLinesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"insuranceLines\"}},[_vm._v(\"Ramo\")]),_c('ejs-multiselect',{attrs:{\"id\":\"insuranceLines\",\"dataSource\":_vm.insuranceLinesList,\"placeholder\":\"Ramo\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Ramo\"},model:{value:(_vm.m_filter.insuranceLinesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"insuranceLinesList\", $$v)},expression:\"m_filter.insuranceLinesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"brokers\"}},[_vm._v(\"Comercial\")]),_c('ejs-multiselect',{attrs:{\"id\":\"brokers\",\"dataSource\":_vm.brokersList,\"placeholder\":\"Comercial\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar comercial\"},model:{value:(_vm.m_filter.brokersList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"brokersList\", $$v)},expression:\"m_filter.brokersList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"agents\"}},[_vm._v(\"Intermediario\")]),_c('ejs-multiselect',{attrs:{\"id\":\"agents\",\"dataSource\":_vm.agentsList,\"placeholder\":\"Intermediario\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Intermediario\"},model:{value:(_vm.m_filter.agentsList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"agentsList\", $$v)},expression:\"m_filter.agentsList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-3\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"analystList\"}},[_vm._v(\"Analista\")]),_c('ejs-multiselect',{attrs:{\"id\":\"analystList\",\"dataSource\":_vm.analysts,\"placeholder\":\"Analista\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Analista\"},model:{value:(_vm.m_filter.analystList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"analystList\", $$v)},expression:\"m_filter.analystList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12 classEspecial\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons e-statistic inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.searchData($event)}}},[_vm._v(\"Generar Estadísticas\")])],1)])]),_c('ejs-tab',{attrs:{\"id\":\"tab_default\",\"selecting\":_vm.tabSelecting}},[_c('div',{staticClass:\"e-tab-header\"},[_c('div',[_vm._v(\"Centro Técnico\")]),_c('div',[_vm._v(\"Comercial\")])]),_c('div',{staticClass:\"e-content\"},[_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\"},[_c('chart',{ref:\"chart1\",attrs:{\"config\":_vm.configGraphTec1,\"columns\":_vm.columnsGraphTec1,\"dataGrid\":_vm.dataTec1,\"chartId\":\"Requerimientos\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\"},[_c('chart',{ref:\"Chart2\",attrs:{\"chartType\":\"ejs-accumulationchart\",\"config\":_vm.configGraphTec2,\"columns\":_vm.columnsGraphTec2,\"dataGrid\":_vm.dataTec2,\"chartId\":\"TiemposAtencion\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\"},[_c('chart',{ref:\"chart5\",attrs:{\"config\":_vm.configGraphTec3,\"columns\":_vm.columnsGraphTec3,\"dataGrid\":_vm.dataTec3,\"chartId\":\"MacroRamos\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-6\"},[_c('chart',{ref:\"chart4\",attrs:{\"config\":_vm.configGraphTec4,\"columns\":_vm.columnsGraphTec4,\"dataGrid\":_vm.dataTec4,\"chartId\":\"ReqAtendidosLineal\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('chart',{ref:\"chart7\",attrs:{\"config\":_vm.configGraphTec5,\"columns\":_vm.columnsGraphTec5,\"dataGrid\":_vm.dataTec5,\"chartId\":\"SolicitudesDia\"}})],1)])]),_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('chart',{ref:\"chart8\",attrs:{\"config\":_vm.configGraphBroker1,\"columns\":_vm.columnsGraphBroker1,\"dataGrid\":_vm.dataBroker1,\"chartId\":\"IndiceConversion\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('chart',{ref:\"chart9\",attrs:{\"config\":_vm.configGraphBroker2,\"columns\":_vm.columnsGraphBroker2,\"dataGrid\":_vm.dataBroker2,\"chartId\":\"IndiceParticipacion\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('chart',{ref:\"chart6\",attrs:{\"config\":_vm.configGraphBroker3,\"columns\":_vm.columnsGraphBroker3,\"dataGrid\":_vm.dataBroker3,\"chartId\":\"Estados\"}})],1)])])])])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Estadísticas\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('br')])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-wrapper\"},[_c('ejs-tab',{attrs:{\"id\":\"tab_default\",\"selecting\":_vm.tabSelecting}},[_c('div',{staticClass:\"e-tab-header\"},[_c('div',[_vm._v(\"Grafica\")]),_c('div',[_vm._v(\"Datos\")])]),_c('div',{staticClass:\"e-content\"},[_c('div',[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12\"},[(_vm.chartType == 'ejs-chart')?_c('ejs-chart',{ref:\"Chart\",staticStyle:{\"display\":\"block\"},attrs:{\"align\":\"center\",\"id\":_vm.chartId,\"title\":_vm.config.title,\"primaryXAxis\":_vm.config.primaryXAxis != undefined\n ? _vm.config.primaryXAxis\n : _vm.primaryXAxis,\"primaryYAxis\":_vm.config.primaryYAxis != undefined\n ? _vm.config.primaryYAxis\n : _vm.primaryYAxis,\"tooltip\":_vm.tooltipChart,\"palettes\":_vm.config.palettes != undefined ? _vm.config.palettes : [],\"chartArea\":_vm.chartArea,\"legendSettings\":_vm.legendSettings,\"enableSmartLables\":\"true\",\"enableAnimation\":_vm.config.enableAnimation,\"zoomSettings\":_vm.zoomSettings,\"theme\":\"Fabric\"}},[_c('e-series-collection',_vm._l((_vm.config.series),function(item){return _c('e-series',{key:item.seriesName,attrs:{\"dataSource\":item.dataSource,\"type\":item.type,\"xName\":item.xName,\"yName\":item.yName,\"name\":item.seriesName,\"marker\":_vm.marker,\"width\":\"2\",\"dashArray\":\"5,1\",\"cornerRadius\":_vm.cornerRadius}})}),1)],1):_vm._e(),(_vm.chartType == 'ejs-accumulationchart')?_c('ejs-accumulationchart',{ref:\"Chart2\",attrs:{\"id\":\"container\",\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"title\":_vm.config.title,\"chartArea\":_vm.chartArea,\"legendSettings\":_vm.legendSettings,\"tooltip\":_vm.tooltipChart,\"theme\":\"Fabric\"}},[_c('e-accumulation-series-collection',[_c('e-accumulation-series',{attrs:{\"dataSource\":_vm.config.dataSource,\"xName\":_vm.config.xName,\"yName\":_vm.config.yName,\"dataLabel\":_vm.dataLabel,\"enableSmartLables\":\"true\",\"enableAnimation\":_vm.config.enableAnimation,\"palettes\":_vm.config.palettes != undefined ? _vm.config.palettes : []}})],1)],1):_vm._e()],1)]),_c('div',[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12\"},[_c('ejs-grid',{ref:\"grid\",attrs:{\"toolbarClick\":_vm.gridToolbarClick,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.dataGrid,\"allowSorting\":false,\"allowSelection\":false,\"allowExcelExport\":true,\"allowFiltering\":false,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"load\":_vm.gridLoad,\"dataBound\":_vm.gridDataBound,\"locale\":\"es-CO\"}})],1)])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @return {any}\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n * @param {Function} handler - callback function to be triggered.\n * @return {Function}\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @return {any}\n * @private\n */\nexport function getValue(nameSpace, obj) {\n /* tslint:disable no-any */\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} params - String value to the get the inner object\n * @return {void}\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n * Check weather the given argument is only object.\n * @param {any} obj - Object which is need to check.\n * @return {boolean}\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @return {any}\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @return {void}\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @return {Object}\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!arguments_1[i]) {\n return \"continue\";\n }\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, deep);\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n * @param {Object} value - To check the object is null or undefined\n * @return {boolean}\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n * @param {Object} value - To check the object is undefined\n * @return {boolean}\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n * @param {string} definedName - To concatenate the unique id to provided name\n * @return {string}\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @return {Function}\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n // tslint:disable-next-line\n return function () {\n var _this = this;\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n// Added since lint ignored after added '//tslint:disable-next-line' \n/* tslint:disable:no-any */\n/**\n * To convert the object to string for query url\n * @param {Object} data\n * @returns string\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n * @param {T[]} value- Specifies the T type array to be checked.\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n * @param{Element} - Specifies the child element to compare with parent.\n * @param{Element} - Specifies the parent element.\n * @return boolean\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n * @param{string} - Specifies the error message to be thrown.\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n * @param{Element} element - Specifies the print content element.\n * @param{Window} printWindow - Specifies the print window.\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[l]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|%|px|vh|vm|vmax|vmin|em/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nexport function getInstance(element, component) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nexport function addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar latnRegex = /^[0-9]*$/;\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object}\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object}\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object}\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n /* tslint:disable no-any */\n if (!res.hasOwnProperty(prop[key])) {\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp}\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n * @param {string} val\n * @returns {string}\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string}\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n * @param {Object} obj\n * @returns {NumericObject}\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n * @param {Object} curObj\n * @param {Object} numberSystem\n * @param {boolean} isNumber\n * @returns {NumberMapper}\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\nexport var HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which date will format.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n /* tslint:disable no-any */\n var charKey = datePartMatcher[char];\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n * @param {Date} value\n * @param {FormatOptions} options\n */\n // tslint:disable-next-line:max-func-body-length\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[desig];\n break;\n case 'G':\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/\\'/g, '');\n break;\n case 'z':\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n ret += options.numMapper.numberSymbols[timeSeparator];\n /* tslint:enable no-any */\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n * @param {number} tVal\n * @param {string} pattern\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} object- Specifies the global cldr data collection.\n * @return Function.\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* tslint:disable no-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n * @param {string} pattern\n * @returns {GroupDetails}\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n * @param {number} val1\n * @param {number} val2\n * @param {boolean} checkbothExist\n * @param {boolean} isFraction\n * @returns {boolean}\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n * @param {number} val\n * @param {string} text\n * @param {boolean} isFraction\n * @returns {void}\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n * @param {number} value\n * @param {base.GenericFormatOptions} fOptions\n * @param {CommonOptions} dOptions\n * @returns {string}\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n * @param {string} val\n * @param {number} level1\n * @param {string} sep\n * @param {string} decimalSymbol\n * @param {number} level2\n * @returns {string}\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n * @param {string} value\n * @param {number} min\n * @returns {string}\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar number = 'numbers';\nvar defNoSystem = 'defaultNumberingSystem';\nvar noSystem = 'numberingSystem';\nvar standalone = 'stand-alone';\nvar curWeekDay = 'curWeekDay';\nvar latnRegex = /^[0-9]*$/;\nvar abbreviateRegex = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|ccc/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which string date will be parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n // tslint:disable-next-line:max-func-body-length\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n // tslint:disable-next-line\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // tslint:disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // tslint:disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // tslint:disable\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n /* tslint:disable no-any */\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n /* tslint:disable no-any */\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // tslint:disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n /* tslint:disable no-any */\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n var iString = str.replace(/\\'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n * @param {DateParts} options\n * @param {Date} value\n * @returns {Date}\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[key];\n if (isUndefined(tValue) && key === \"day\") {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n * @param {string} value\n * @param {ParseOptions} parseOptions\n * @param {NumericOptions} num\n * @returns {DateParts}\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n var nRegx = num.numericRegex;\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = prop === 'designator' && /^(AM|PM)$/i.test(matchString) ? matchString.toUpperCase() : matchString;\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n * @param {string} value\n * @param {NumericOptions} option\n * @returns {number}\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n * @param {string} hourFormat\n * @param {base.TimeZoneOptions} tZone\n * @param {string} nRegex\n * @returns {string}\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var result;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n * @param {boolean} flag\n * @param {string} val1\n * @param {string} val2\n * @param {NumericOptions} num\n * @returns {number}\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n/* tslint:enable */\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar formatRegex = /(^[ncpa]{1})([0-1]?[0-9]|20)?$/i;\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar latnDecimalRegex = /^[0-9]*(\\.[0-9]+)?$/;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} - Specific the format in which number will parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // tslint:disable-next-line:no-any\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n * @param {string} value\n * @param {NumericParts} options\n * @param {NumericOptions} numOptions\n * @returns {number}\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n ;\n /**\n * To attach handler for given property in current context.\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n * @param {string} eventName - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} args - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @return {void}\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // tslint:disable-next-line:no-any\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n */\n Observer.prototype.notExist = function (prop) {\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n /* tslint:disable no-any */\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\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 \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\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 },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {string|Object} options?\n * @param {string} type?\n * @param {boolean} async?\n * @returns defaultType\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n * Send the request to server.\n * @param {any} data - To send the user data\n * @return {Promise}\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n * @param {string} key Key to search in the response header\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ \\/]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ \\/]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ \\/]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ \\/]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ \\/]([\\w.]+)/i,\n SAFARI: /(safari)[ \\/]([\\w.]+)/i,\n WEBKIT: /(webkit)[ \\/]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n * @param {string} event - type of event triggered.\n * @returns {Boolean}\n */\n Browser.getEvent = function (event) {\n // tslint:disable-next-line:no-any\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer && !Browser.isWindows ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n * @param {string} key\n * @param {RegExp} regX\n * @returns {Object}\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties \n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n * @returns BrowserInfo\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * @private\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} debounce - Specifies at what interval given event listener should be triggered.\n * @return {Function}\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n * @param {any} element - Specifies the target html element to clear the events\n * @return {void}\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n eventData = EventHandler.addOrGetEventData(element);\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @return {void}\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n var fn = null;\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(\\/if|\\/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n * @param {RegExp} value - Value expression.\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper? - Helper functions as an object.\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\"; return str;\";\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n// function used to evaluate the function expression\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\\\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /\\@|\\#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /\\@|\\$|\\#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /\\@|\\$|\\#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition \n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/\\,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// tslint:disable-next-line\nfunction SlashReplace(tempStr) {\n // tslint:disable-next-line\n var double = \"\\\\\\\\\";\n if (tempStr.match(DOUBLE_SLASH)) {\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /\\@|\\$|\\#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+\\\\s]+))?)*)\\s*(\\/?)>/;\nvar endRegex = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nvar attributeRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n/**\n * Namespace for VirtualDOM\n * @private\n */\nexport var VirtualDOM;\n(function (VirtualDOM) {\n //tslint:disable:no-any\n function createElement(tagName, properties) {\n var children = [];\n var extended = extend({}, {}, properties, true);\n if (!isNullOrUndefined(properties)) {\n var keys = Object.keys(properties);\n if (keys.length) {\n if (extended.innerHTML) {\n children = ConvertHTMLToJSon(extended.innerHTML);\n delete extended.innerHTML;\n }\n if (extended.attrs) {\n extend(extended, extended.attrs);\n delete extended.attrs;\n }\n if (extended.styles) {\n var valArr = extended.styles.split(';');\n var vObj = {};\n for (var i = 0, length_1 = valArr.length; i < length_1; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n delete extended.styles;\n extended.style = vObj;\n }\n }\n }\n return {\n tagName: tagName,\n attributes: extended || {},\n children: children\n };\n }\n VirtualDOM.createElement = createElement;\n function assignParent(childrens, parent) {\n if (parent && childrens) {\n childrens.forEach(function (child) {\n if (isObject(child)) {\n if (child.parent) {\n detach(child);\n }\n child.parent = parent;\n }\n return child;\n });\n }\n }\n VirtualDOM.assignParent = assignParent;\n function append(fromElements, toElement) {\n assignParent(fromElements, toElement);\n if (toElement.children) {\n toElement.children = toElement.children.concat(fromElements);\n }\n else {\n toElement.children = [].concat(fromElements);\n }\n }\n VirtualDOM.append = append;\n function prepend(child, toElement) {\n assignParent(child, toElement);\n if (!toElement.children || !toElement.children.length) {\n toElement.children = [];\n toElement.children.concat(child);\n }\n else {\n for (var i = child.length - 1; i >= 0; i--) {\n toElement.children.unshift(child[i]);\n }\n }\n }\n VirtualDOM.prepend = prepend;\n function detach(element) {\n var parent = element.parent;\n if (parent) {\n var index = parent.children.indexOf(element);\n if (index !== -1) {\n parent.children.splice(index);\n }\n }\n return parent;\n }\n VirtualDOM.detach = detach;\n //tslint:disable-next-line\n function vDomSelector(_a) {\n var ele = _a.ele, selector = _a.selector, selectAll = _a.selectAll, immediateParent = _a.immediateParent;\n var iSelector = selector.split(' ');\n var curColl = ele;\n for (var i = 0, length_2 = iSelector.length; i < length_2; i++) {\n var isDescendant = false;\n var parent_2 = curColl;\n var curSelector = iSelector[i];\n var simpleSelector = false;\n var mapper = [];\n if (simpleRegex.test(curSelector)) {\n simpleSelector = true;\n processSelector(curSelector, mapper);\n }\n else if (curSelector.indexOf('>') === -1) {\n var splitSelector = curSelector.match(multipleSplitRegex);\n for (var _i = 0, splitSelector_1 = splitSelector; _i < splitSelector_1.length; _i++) {\n var curMap = splitSelector_1[_i];\n processSelector(curMap, mapper);\n }\n }\n else if (curSelector.indexOf('>') !== -1) {\n isDescendant = true;\n var dSelector = curSelector.split('>');\n //tslint:disable-next-line\n var dParent = ele;\n var descendent = void 0;\n var flag = 0;\n for (var _b = 0, dSelector_1 = dSelector; _b < dSelector_1.length; _b++) {\n var sel = dSelector_1[_b];\n if (!dParent) {\n break;\n }\n if (dParent.length) {\n var descendentChild = [];\n for (var _c = 0, dParent_1 = dParent; _c < dParent_1.length; _c++) {\n var child = dParent_1[_c];\n descendentChild = descendentChild.concat(vDomSelector({\n ele: child, selector: sel,\n selectAll: selectAll, immediateParent: !!flag\n }));\n }\n descendent = descendentChild;\n }\n else {\n descendent = vDomSelector({ ele: dParent, selector: sel, selectAll: selectAll, immediateParent: !!flag });\n }\n flag++;\n dParent = descendent;\n }\n if (descendent) {\n curColl = descendent;\n }\n }\n if (!isDescendant) {\n if (parent_2.length) {\n var iCurSelector = [];\n for (var _d = 0, parent_1 = parent_2; _d < parent_1.length; _d++) {\n var curParent = parent_1[_d];\n iCurSelector = iCurSelector.concat(accessElement(curParent, mapper, selectAll, immediateParent));\n }\n curColl = iCurSelector;\n }\n else {\n curColl = accessElement(parent_2, mapper, selectAll, immediateParent);\n }\n }\n }\n if (selectAll) {\n return curColl;\n }\n else {\n return curColl[0] || null;\n }\n }\n VirtualDOM.vDomSelector = vDomSelector;\n function processSelector(selector, mapper) {\n var match = selector.match(idClassSelector);\n var obj = {};\n if (match) {\n var curMapper = selectMapper[match[0]];\n if (curMapper === 'className') {\n var curObj = mapper.filter(function (obj) { return obj.hasOwnProperty('className'); })[0];\n var canPush = false;\n if (!curObj) {\n canPush = true;\n curObj = {};\n }\n var existValue = curObj[curMapper] || '';\n curObj[curMapper] = existValue + classRegexString.replace('{value}', selector.replace('.', ''));\n if (canPush) {\n mapper.push(curObj);\n }\n }\n else {\n obj[curMapper] = selector.replace(match[0], '');\n mapper.push(obj);\n }\n }\n else {\n mapper.push({ tagName: selector });\n }\n }\n //tslint:disable-next-line\n function accessElement(ele, mapper, selectAll, immediateParent) {\n if (ele.children) {\n //tslint:disable-next-line\n var temp_1 = ele.children.filter(function (child) {\n if (typeof (child) !== 'string') {\n var matched = true;\n for (var _i = 0, mapper_1 = mapper; _i < mapper_1.length; _i++) {\n var map = mapper_1[_i];\n var key = Object.keys(map)[0];\n var expected = map[key];\n var actualValue = getValue(assigner[key], child);\n if (key === 'className') {\n if (!(new RegExp('^' + expected + '.*$').test(actualValue))) {\n matched = false;\n break;\n }\n }\n else if (actualValue !== expected) {\n matched = false;\n break;\n }\n }\n return matched;\n }\n else {\n return false;\n }\n });\n if (!immediateParent && (!temp_1.length || selectAll)) {\n ele.children.forEach(function (child) {\n if (isObject(child)) {\n temp_1 = temp_1.concat(accessElement(child, mapper, selectAll));\n }\n });\n }\n return temp_1;\n }\n else {\n return [];\n }\n }\n VirtualDOM.accessElement = accessElement;\n function ConvertHTMLToJSon(htmlString) {\n var results = [];\n var isText;\n var tagArray = [];\n var backup = htmlString;\n var nodeArray = [];\n while (htmlString) {\n isText = true;\n var lastVal = getLastValue(tagArray);\n if (!lastVal || !contains(cspElement, lastVal)) {\n if (htmlString.indexOf(']*>'), function (all, text) {\n text = text.replace(/|/g, '$1$2');\n iterateText(text);\n return '';\n });\n iterateEndTag('', getLastValue(tagArray));\n }\n backup = htmlString;\n }\n function iterateStartTag(start, tagName, rest) {\n tagName = tagName.toLowerCase();\n if (contains(blockElements, tagName)) {\n while (getLastValue(tagArray) && contains(inlineElement, getLastValue(tagArray))) {\n iterateEndTag('', getLastValue(tagArray));\n }\n }\n if (contains(selfClosingElements, tagName) && getLastValue(tagArray)) {\n iterateEndTag('', tagName);\n }\n var isSelfTag = contains(emptyElements, tagName);\n if (!isSelfTag) {\n tagArray.push(tagName);\n }\n var attrs = {};\n //tslint:disable-next-line\n rest.replace(attributeRegex, function (match, name) {\n var names = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n names[_i - 2] = arguments[_i];\n }\n //tslint:disable-next-line\n var val = names[2] ? names[2] :\n names[3] ? names[3] :\n names[4] ? names[4] :\n contains(fillAttrs, name) ? name : '';\n if (name === 'style') {\n var valArr = val.split(';');\n var vObj = {};\n for (var i = 0, length_3 = valArr.length; i < length_3; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n val = vObj;\n }\n name = nameMapper[name] || name;\n attrs[name] = val;\n //tslint:disable-next-line\n });\n attrs['data-id'] = getRandomId();\n var tagObject = {\n tagName: tagName,\n attributes: attrs\n };\n if (isSelfTag) {\n var parent_3 = (nodeArray[0] || results);\n if (parent_3.children === undefined) {\n parent_3.children = [];\n }\n tagObject.parent = parent_3;\n parent_3.children.push(tagObject);\n }\n else {\n nodeArray.unshift(tagObject);\n }\n }\n function iterateEndTag(start, tagName) {\n var pos;\n if (!tagName) {\n pos = 0;\n }\n else {\n for (pos = tagArray.length - 1; pos >= 0; pos--) {\n if (tagArray[pos] === tagName) {\n break;\n }\n }\n }\n if (pos >= 0) {\n for (var j = nodeArray.length - 1; j >= pos; j--) {\n //tslint:disable-next-line\n var node = nodeArray.shift();\n if (nodeArray.length === 0) {\n results.push(node);\n }\n else {\n var parent_4 = nodeArray[0];\n if (parent_4.children === undefined) {\n parent_4.children = [];\n }\n node.parent = parent_4;\n parent_4.children.push(node);\n }\n }\n tagArray.length = pos;\n }\n }\n function iterateText(text) {\n if (nodeArray.length === 0) {\n results.push(text);\n }\n else {\n var parent_5 = nodeArray[0];\n if (parent_5.children === undefined) {\n parent_5.children = [];\n }\n parent_5.children.push(text);\n }\n }\n return results;\n }\n VirtualDOM.ConvertHTMLToJSon = ConvertHTMLToJSon;\n //tslint:disable-next-line \n function getLastValue(arr) {\n return arr[arr.length - 1];\n }\n function contains(arr, key) {\n return arr.indexOf(key) !== -1;\n }\n //tslint:disable-next-line\n function cloneNode(ele, deep) {\n if (isObject(ele)) {\n if (deep) {\n return extend({}, {}, ele, true);\n }\n else {\n return { tagName: ele.tagName, attributes: ele.attributes };\n }\n }\n else {\n return ele.cloneNode(deep);\n }\n }\n VirtualDOM.cloneNode = cloneNode;\n function setStyleAttribute(element, attrs) {\n if (element.attributes.style) {\n (element.attributes).style = extend({}, attrs);\n }\n else {\n element.attributes.style = extend(element.attributes.style, attrs);\n }\n }\n VirtualDOM.setStyleAttribute = setStyleAttribute;\n //tslint:enable:no-any\n})(VirtualDOM || (VirtualDOM = {}));\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nimport { VirtualDOM } from './virtual-dom';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nexport function createElement(tagName, properties) {\n //tslint:disable-next-line\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n /* istanbul ignore next */\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nexport function detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n }\n}\n//tslint: enable:no-any\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nexport function remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n /* istanbul ignore next */\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: false });\n }\n else {\n selector = querySelectId(selector);\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: true });\n }\n else {\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n /* istanbul ignore next */\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\n/* istanbul ignore next */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach(function (key) {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nexport function matches(element, selector) {\n //tslint:disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/* istanbul ignore next */\nexport function includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n var res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n/* istanbul ignore next */\n//tslint:disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n/* istanbul ignore next */\n//tslint:disable:no-any\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n ;\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n */\n Base.prototype.destroy = function () {\n var _this = this;\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\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 { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n };\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var startTime = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n * @private\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n * @private\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return Function;\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\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 { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { VirtualDOM } from './virtual-dom';\nimport { getRandomId } from './template-engine';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\n/* istanbul ignore next */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n /* istanbul ignore next */\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n */\n /* istanbul ignore next */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n };\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n //tslint:disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n * @param {boolean} val\n * @param {string} propName\n * @returns {void}\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n * @param {Object} prop\n * @param {boolean} muteOnChange\n * {void}\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n * @param {string} key\n * @param {Object} newValue\n * @param {Object} oldValue\n * @returns {void}\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n // tslint:disable-next-line:no-any\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // tslint:disable-next-line:no-any\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\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 { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n var marginTop = parseFloat(styles.marginTop);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += this.element.offsetTop;\n if (dTop < 0) {\n if ((this.element.offsetTop + dTop) >= 0) {\n draEleTop = this.element.offsetTop + dTop;\n }\n else {\n draEleTop -= this.element.offsetTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\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 { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\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, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n * @param {HTMLElement} element\n * @param {KeyboardEventsModel} options\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n * @return {void}\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n * @param newProp\n * @param oldProp\n * @returns {void}\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n ;\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n * @param {string} config - configuration data\n * returns {KeyData}\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n };\n // Return the keycode value as string \n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n * @param {string} locale\n * @returns {void}\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n * @param {string} propertyName - specifies the property for which localize text to be returned.\n * @return string\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n * @param {Object} curObject\n * @param {string} locale\n * @returns {Object}\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\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 { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n // tslint:disable-next-line:no-any\n var isFirefox = (/Mozilla|Firefox|Mac OS/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed \n /**\n * @private\n * @param newProp\n * @param oldProp\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n * @return {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n * @returns {string}\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean}\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // tslint:disable-next-line:no-any\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n // tslint:disable-next-line:max-line-length\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n ;\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue;\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[j].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\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 * Vue Component Base\n */\nimport Vue from 'vue';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.hasInjectedModules = false;\n _this.hasChildDirective = false;\n _this.childDirObjects = '';\n return _this;\n }\n ComponentBase.prototype.created = function () {\n var _this = this;\n var _loop_1 = function (prop) {\n this_1.ej2Instances.addEventListener(prop, function (args) {\n _this.$emit(prop, args);\n });\n };\n var this_1 = this;\n for (var _i = 0, _a = this.propKeys; _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n ComponentBase.prototype.mounted = function () {\n this.ej2Instances.isVue = true;\n this.ej2Instances.vueInstance = this;\n this.ej2Instances.appendTo(this.$el);\n };\n ComponentBase.prototype.getInjectedServices = function () {\n var ret = [];\n var provide = getValue('$vnode.context.$options.provide', this);\n if (provide) {\n // tslint:disable:no-any\n var injectables = provide;\n if (typeof provide === 'function') {\n // tslint:disable:no-any\n injectables = this.$vnode.context.$options.provide();\n }\n ret = injectables[this.ej2Instances.getModuleName()] || [];\n }\n return ret;\n };\n ComponentBase.prototype.updated = function () {\n if (this.hasChildDirective) {\n var childKey = {};\n this.fetchChildPropValues(childKey);\n var curChildDir = JSON.stringify(childKey);\n if (this.childDirObjects !== curChildDir) {\n this.childDirObjects = curChildDir;\n this.assignValueToWrapper(childKey, false);\n }\n }\n };\n ComponentBase.prototype.beforeDestroy = function () {\n var tempBeforeDestroyThis = this;\n tempBeforeDestroyThis.ej2Instances.destroy();\n tempBeforeDestroyThis.$el.style.visibility = 'hidden';\n tempBeforeDestroyThis = null;\n };\n ComponentBase.prototype.bindProperties = function () {\n var options = {};\n for (var _i = 0, _a = this.propKeys; _i < _a.length; _i++) {\n var prop = _a[_i];\n if (!isNullOrUndefined(this[prop])) {\n options[prop] = this[prop];\n }\n }\n if (this.hasChildDirective) {\n this.fetchChildPropValues(options);\n }\n if (this.hasInjectedModules) {\n var prevModule = this.getInjectedServices() || [];\n var curModule = this.ej2Instances.getInjectedModules() || [];\n for (var _b = 0, curModule_1 = curModule; _b < curModule_1.length; _b++) {\n var mod = curModule_1[_b];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.ej2Instances.injectedModules = prevModule;\n }\n this.assignValueToWrapper(options);\n };\n ComponentBase.prototype.assignValueToWrapper = function (option, silent) {\n this.ej2Instances.setProperties(extend({}, {}, option, true), isNullOrUndefined(silent) ? true : silent);\n };\n ComponentBase.prototype.fetchChildPropValues = function (childOption) {\n var dirProps = this.getDirectiveValues(this.$slots.default, this.tagMapper || {}, this.tagNameMapper || {});\n if (!this.childDirObjects) {\n this.childDirObjects = JSON.stringify(dirProps);\n }\n for (var _i = 0, _a = Object.keys(dirProps); _i < _a.length; _i++) {\n var dirProp = _a[_i];\n childOption[dirProp] = dirProps[dirProp];\n }\n };\n ComponentBase.prototype.getDirectiveValues = function (tagDirectives, tagMapper, tagNameMapper) {\n var keyTags = Object.keys(tagMapper);\n var dir = {};\n if (tagDirectives) {\n for (var _i = 0, tagDirectives_1 = tagDirectives; _i < tagDirectives_1.length; _i++) {\n var tagDirective = tagDirectives_1[_i];\n if (tagDirective.componentOptions && tagDirective.componentOptions.children && tagDirective.componentOptions.tag) {\n var dirTag = tagDirective.componentOptions.tag;\n if (keyTags.indexOf(dirTag) !== -1) {\n var tagName = tagNameMapper[dirTag] ? tagNameMapper[dirTag] : dirTag;\n dir[tagName.replace('e-', '')] = [];\n for (var _a = 0, _b = tagDirective.componentOptions.children; _a < _b.length; _a++) {\n var tagDirChild = _b[_a];\n var retObj = this.getVNodeValue(tagDirChild, tagMapper[dirTag], tagNameMapper);\n if (Object.keys(retObj).length !== 0) {\n dir[tagName.replace('e-', '')].push(retObj);\n }\n }\n }\n }\n }\n }\n return dir;\n };\n ComponentBase.prototype.getMultiLevelDirValue = function (tagDirectories, tagKey, tagNameMapper) {\n var mulObj = {};\n for (var _i = 0, tagDirectories_1 = tagDirectories; _i < tagDirectories_1.length; _i++) {\n var tagDir = tagDirectories_1[_i];\n if (tagDir.componentOptions) {\n var key = tagDir.componentOptions.tag;\n var tagName = tagNameMapper[key] ? tagNameMapper[key] : key;\n mulObj[tagName.replace('e-', '')] = [];\n if (tagDir.componentOptions && tagDir.componentOptions.children) {\n for (var _a = 0, _b = tagDir.componentOptions.children; _a < _b.length; _a++) {\n var tagDirChild = _b[_a];\n var mulLevObj = this.getVNodeValue(tagDirChild, tagKey[key], tagNameMapper);\n if (Object.keys(mulLevObj).length !== 0) {\n mulObj[tagName.replace('e-', '')].push(mulLevObj);\n }\n }\n }\n }\n }\n return mulObj;\n };\n ComponentBase.prototype.getVNodeValue = function (tagDirective, tagKey, tagNameMapper) {\n var ret = {};\n if (tagDirective.componentOptions) {\n var dirTag = tagDirective.componentOptions.tag;\n if (typeof tagKey === 'string' && dirTag === tagKey && tagDirective.data) {\n ret = tagDirective.data.attrs ? this.getCamelCaseProps(tagDirective.data.attrs) : this.getCamelCaseProps(tagDirective.data);\n }\n else if (typeof tagKey === 'object') {\n if (tagDirective.componentOptions.children && (Object.keys(tagKey).indexOf(dirTag) !== -1)) {\n ret = this.getMultiLevelDirValue(tagDirective.componentOptions.children, tagKey[dirTag], tagNameMapper);\n }\n if (tagDirective.data && tagDirective.data.attrs) {\n ret = extend(ret, this.getCamelCaseProps(tagDirective.data.attrs));\n }\n }\n }\n return ret;\n };\n /**\n * convert kebab case directive props to camel case\n */\n ComponentBase.prototype.getCamelCaseProps = function (props) {\n var retProps = {};\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var prop = _a[_i];\n retProps[prop.replace(/-[a-z]/g, function (e) { return e[1].toUpperCase(); })] = props[prop];\n }\n return retProps;\n };\n ComponentBase.prototype.dataBind = function () {\n this.ej2Instances.dataBind();\n };\n ComponentBase.prototype.setProperties = function (arg, muteOnChange) {\n return this.ej2Instances.setProperties(arg, muteOnChange);\n };\n return ComponentBase;\n}(Vue));\nexport { ComponentBase };\n","/**\n * Vue Component Base\n */\nimport Vue from 'vue';\nimport { ComponentBase } from './component-base';\nexport var $internalHooks = [\n 'data',\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeDestroy',\n 'destroyed',\n 'beforeUpdate',\n 'updated',\n 'activated',\n 'deactivated',\n 'render',\n 'errorCaptured' // 2.5\n];\nexport function EJComponentDecorator(options) {\n return function (Component) {\n return EJcomponentFactory(Component, options);\n };\n}\nexport function EJcomponentFactory(Component, options) {\n if (options === void 0) { options = {}; }\n options.name = options.name || Component._componentTag || Component.name;\n // prototype props.\n var proto = Component.prototype;\n if (options.props) {\n var _loop_1 = function (prop) {\n (options.props || (options.props = {}))[prop] = {};\n (options.watch || (options.watch = {}))[prop] = function (newVal) {\n this.ej2Instances[prop] = newVal;\n if (this.dataBind && (options.name !== 'DateRangePickerComponent')) {\n this.dataBind();\n }\n };\n };\n for (var _i = 0, _a = options.props; _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n }\n Object.getOwnPropertyNames(proto).forEach(function (key) {\n // hooks\n if (key === 'constructor') {\n return;\n }\n if ($internalHooks.indexOf(key) > -1) {\n options[key] = proto[key];\n return;\n }\n var descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (typeof descriptor.value === 'function') {\n // methods\n (options.methods || (options.methods = {}))[key] = descriptor.value;\n }\n else if (descriptor.get || descriptor.set) {\n // computed properties\n (options.computed || (options.computed = {}))[key] = {\n get: descriptor.get,\n set: descriptor.set\n };\n }\n });\n Object.getOwnPropertyNames(ComponentBase.prototype).forEach(function (key) {\n if ($internalHooks.indexOf(key) > -1) {\n options[key] = proto[key];\n return;\n }\n });\n (options.mixins || (options.mixins = [])).push({\n data: function () {\n return collectDataFromConstructor(this, Component);\n }\n });\n // decorate options\n var decorators = Component.__decorators__;\n if (decorators) {\n decorators.forEach(Function(options));\n delete Component.__decorators__;\n }\n // find super\n var superProto = Object.getPrototypeOf(Component.prototype);\n var Super = superProto instanceof Vue\n ? superProto.constructor\n : Vue;\n var Extended = Super.extend(options);\n return Extended;\n}\nfunction collectDataFromConstructor(vm, Component) {\n Component.prototype._init = function () {\n var _this = this;\n var keys = Object.getOwnPropertyNames(vm);\n if (vm.$options.props) {\n for (var key in vm.$options.props) {\n if (!vm.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n }\n keys.forEach(function (key) {\n if (key.charAt(0) !== '_') {\n Object.defineProperty(_this, key, {\n get: function () { return vm[key]; },\n set: function (value) { return vm[key] = value; }\n });\n }\n });\n };\n var data = new Component();\n var plainData = {};\n Object.keys(data).forEach(function (key) {\n if (data[key] !== undefined) {\n plainData[key] = data[key];\n }\n });\n return plainData;\n}\n","import Vue from 'vue';\nimport { setTemplateEngine, getTemplateEngine, getUniqueID, createElement, detach, extend, getValue } from \"@syncfusion/ej2-base\";\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n var that = this;\n if (typeof templateElement === 'string') {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, context) {\n var pid = getUniqueID('templateParentDiv');\n var id = getUniqueID('templateDiv');\n var ele = createElement('div', { id: pid, innerHTML: '
' });\n document.body.appendChild(ele);\n var tempObj = templateElement.call(that, {});\n var returnEle;\n if (context) {\n var templateFunction = tempObj.template;\n var propsData = getValue('template.propsData', tempObj);\n var dataObj = { 'data': { data: extend(tempObj.data || {}, data) }, parent: context.vueInstance };\n if (propsData) {\n templateFunction = tempObj.template.extends;\n dataObj.propsData = propsData;\n }\n if (typeof templateFunction !== 'function') {\n templateFunction = Vue.extend(templateFunction);\n }\n var templateVue = new templateFunction(dataObj);\n //let templateVue: any = new Vue(tempObj.template);\n //templateVue.$data.data = extend(tempObj.data, data);\n templateVue.$mount('#' + id);\n returnEle = ele.childNodes;\n detach(ele);\n }\n return returnEle || [];\n };\n }\n}\nsetTemplateEngine({ compile: compile });\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.axisLabelFont = {\n size: '12px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.axisTitleFont = {\n size: '14px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartTitleFont = {\n size: '15px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartSubTitleFont = {\n size: '11px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.crosshairLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.tooltipLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendTitleFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stripLineLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#353535',\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: 'Normal',\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 case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\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 // palette = ['#B586FF', '#71F9A3', '#FF9572', '#5BD5FF', '#F9F871',\n // '#B6F971', '#8D71F9', '#FF6F91', '#FFC75F', '#D55DB1'];\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 */\nexport function getThemeColor(theme) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#303030' : (theme === 'FabricDark' ? '#201F1F' : '1A1A1A');\n switch (theme) {\n case 'HighContrastLight':\n case 'Highcontrast':\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: '#000000',\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 };\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: darkBackground,\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: '#F4F4F4',\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 };\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: '#FFFFFF', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#495057',\n crosshairLabel: '#FFFFFF', tooltipFill: 'rgba(0, 0, 0, 0.9)', 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'\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: '#FFFFFF',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: '#4f4f4f',\n crosshairLabel: '#e5e5e5',\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\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 };\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 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","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 } from '@syncfusion/ej2-base';\nimport { Theme } from '../model/theme';\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 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('Trim')\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 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(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(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 * 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(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex(Theme.tooltipLabelFont, 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(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\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","/* 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.setAttribute('style', 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 element.setAttribute(keys[i], options[keys[i]]);\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 * 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 };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A'\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: 'rgba(0, 0, 0, 0.9)',\n tooltipBoldLabel: 'rgba(255, 255, 255)',\n tooltipLightLabel: 'rgba(255, 255, 255, 0.9)',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)'\n };\n break;\n default:\n style = {\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff'\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) {\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;\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 findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, tipRadius) {\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 tipRadius = tipRadius ? tipRadius : 0;\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 direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + tipRadius) + ' ' + (height + arrowPadding - tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (height + arrowPadding) + ' ' + (tipX - tipRadius) +\n ' ' + (height + arrowPadding - tipRadius);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height +\n ' 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 - tipRadius) + ' ' + (arrowLocation.y + tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (arrowLocation.y) + ' ' + (tipX + tipRadius) + ' ' + (arrowLocation.y + tipRadius);\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY) + ' L' + ' '\n + (width - rX) + ' ' + (startY) + ' 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) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (width + arrowPadding) + ' ' + (tipY) + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' 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 + tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (startX - arrowPadding) + ' ' + (tipY) + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' 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 'Cross':\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 });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path });\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) {\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,\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 htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n parent.appendChild(htmlObject);\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 @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 } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption } 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 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.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 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 === 'Bootstrap4' ? 0 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': this.theme === 'Bootstrap4' ? 0.9 : this.opacity,\n 'stroke': 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 var x = (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 markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : 0)), 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 this.tipRadius = 1;\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n 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 }\n }\n if (this.header !== '') {\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, this.textStyle).height +\n (this.marginY * 2) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : 0); //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': 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.shared && !this.isFirst) {\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.tipRadius));\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 pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\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 pathElement.setAttribute('stroke', this.border.color);\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\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 var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled ? '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).width + (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 = '13px';\n var fontWeight = 'Normal';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\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 var options = new TextOption(this.element.id + '_text', this.marginX * 2, (this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, null, groupElement);\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 (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);\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, '
\\u200E:
')\n .split('
');\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 (!/\\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 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 = 'bold';\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 === 'bold' ? '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 (tspanElement).textContent = line = this.getTextContent(line);\n subWidth += measureText(line, font).width;\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 = 'inherit';\n isRow = false;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, 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 = 'bold';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n };\n Tooltip.prototype.getTextContent = function (text) {\n var texts = text.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(texts)) {\n return text;\n }\n var isRtlText = /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(text);\n for (var i = 0; i < texts.length; i++) {\n if (this.isValidHTMLElement(texts[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n text = text.replace(texts[i], isRtlText ? '\\u200E' : '');\n }\n }\n return text;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() != \"[object HTMLUnknownElement]\";\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 = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\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.shared && !this.isFirst) {\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 var tooltipDivEndValue = tooltipRect.y + tooltipRect.height;\n var boundsEndValue = bounds.y + bounds.height;\n var isStockChart = false;\n var heightDifference;\n if (this.controlInstance) {\n var containerDivID = this.controlInstance[\"element\"][\"id\"];\n isStockChart = containerDivID.indexOf(\"stockChart\") !== -1;\n }\n // To check whether the tooltip crop at bottom\n if (boundsEndValue < tooltipDivEndValue) {\n heightDifference = tooltipDivEndValue - boundsEndValue;\n tooltipRect.y -= (heightDifference + 2 * this.padding);\n }\n // To check whether the tooltip crop at top\n if (tooltipRect.y < bounds.y) {\n heightDifference = bounds.y - tooltipRect.y;\n tooltipRect.y += isStockChart ? (tooltipRect.height + 2 * this.padding) : (heightDifference + 2 * this.padding);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x -= (tooltipRect.width + 4 * this.padding);\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 if (!this.inverted) {\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 (location.y < boundsY || (this.isNegative)) {\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 tipLocation.x = width / 2;\n if (location.x < boundsX) {\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) {\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 (arrowLocation.x + this.arrowPadding / 2 > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding / 2;\n tipLocation.x = width;\n this.tipRadius = 0;\n }\n if (arrowLocation.x - this.arrowPadding / 2 < this.rx) {\n arrowLocation.x = this.rx + this.arrowPadding / 2;\n tipLocation.x = 0;\n this.tipRadius = 0;\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.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.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 / 2 > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding / 2;\n tipLocation.y = height;\n this.tipRadius = 0;\n }\n if (arrowLocation.y - this.arrowPadding / 2 < this.ry) {\n arrowLocation.y = this.ry + this.arrowPadding / 2;\n tipLocation.y = 0;\n this.tipRadius = 0;\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,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\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 tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\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 if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\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')) || 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 }\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(true)\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: '13px', fontWeight: 'Normal', color: null, fontStyle: 'Normal', fontFamily: 'Segoe UI' }, 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: '#cccccc', width: 0.5 }, 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(2)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(2)\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(12)\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(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", 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 Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/* 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 { 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.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 return niceInterval;\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.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 - 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 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 === 'Column' || series.type === 'Bar' || series.drawType === 'Column') ? 1 : 0;\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);\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) {\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 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) {\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(this.chart);\n axis.calculateAxisRange(size, this.chart);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming && axis.valueType !== 'Category') ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : 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 return isCustom ? format.replace('{value}', axis.format(tempInterval))\n : axis.format(tempInterval);\n };\n return Double;\n}());\nexport { Double };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\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 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 = 'chartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\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/ban-types */\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../../common/model/theme';\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(Theme.stripLineLabelFont, 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 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(Theme.axisLabelFont, 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 return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\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 */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { Property, Complex, ChildProperty, Collection, extend } 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 { Theme } from '../../common/model/theme';\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 return _this;\n }\n /**\n * Measure the row size\n *\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight) {\n var width = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\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.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) {\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) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\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(Theme.crosshairLabelFont, 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 _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.opposedPosition && this.crossAt >= range.max) || (this.opposedPosition && 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) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n this.titleSize = measureText(this.title, this.titleStyle);\n titleSize = this.titleSize.height + innerPadding;\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);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\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 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.opposedPosition) {\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.opposedPosition) {\n value = crossAxis.isInversed ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isInversed ? 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 (chart) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isInversed || chart.zoomModule) {\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 * Calculate range for x and y axis after zoom.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateAxisRange = function (size, chart) {\n if (chart.enableAutoIntervalOnBothAxis) {\n if (this.orientation === 'Horizontal' && chart.zoomSettings.mode === 'X') {\n for (var i = 0; i < this.series.length; i++) {\n var yValue = [];\n for (var _i = 0, _a = this.series[i].visiblePoints; _i < _a.length; _i++) {\n var points = _a[_i];\n if ((points.xValue > this.visibleRange.min) && (points.xValue < this.visibleRange.max)) {\n yValue.push(points.yValue);\n }\n }\n for (var _b = 0, _c = chart.axisCollections; _b < _c.length; _b++) {\n var axis = _c[_b];\n if (axis.orientation === 'Vertical' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].yMin = Math.min.apply(Math, yValue);\n axis.series[i].yMax = Math.max.apply(Math, yValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n if (this.orientation === 'Vertical' && chart.zoomSettings.mode === 'Y') {\n for (var i = 0; i < this.series.length; i++) {\n var xValue = [];\n for (var _d = 0, _e = this.series[i].visiblePoints; _d < _e.length; _d++) {\n var points = _e[_d];\n if ((points.yValue > this.visibleRange.min) && (points.yValue < this.visibleRange.max)) {\n xValue.push(points.xValue);\n }\n }\n for (var _f = 0, _g = chart.axisCollections; _f < _g.length; _f++) {\n var axis = _g[_f];\n if (axis.orientation === 'Horizontal' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].xMin = Math.min.apply(Math, xValue);\n axis.series[i].xMax = Math.max.apply(Math, xValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\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);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle);\n }\n else {\n label.size = measureText(label.text, this.labelStyle);\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.isInversed ? 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);\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);\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.isInversed ? 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 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.isInversed ? 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 __decorate([\n Complex(Theme.axisLabelFont, 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(Theme.axisTitleFont, 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, \"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('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","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 jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/ban-types */\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, findDirection, 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 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) || 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 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) {\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).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 remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw) {\n remove(chart.svgObject);\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 innerHTML: text,\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 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.innerHTML = 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 return axis.isInversed ? (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.isInversed ? ((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.opposedPosition;\n var anchor = isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\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 for (var i = 0; i < 2; i++) {\n size = measureText(i ? axis.endLabel : axis.startLabel, axis.labelStyle);\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 = findDirection(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 = findDirection(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 parent.appendChild(chart.renderer.drawPath(new PathOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i, chart.themeStyle.crosshairFill, 2, chart.themeStyle.crosshairFill, 1, null, direction)));\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? axis.endLabel : axis.startLabel), { color: chart.themeStyle.crosshairLabel, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabel, parent);\n }\n return parent;\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.isInversed ? 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.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series) {\n var rect = series.clipRect;\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/** @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 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 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 - 2592000000) : 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 = 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 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 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 {\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) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle)) : 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 'Cross':\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, stroke: options.fill });\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 '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 (document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\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) {\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 (isCanvas) {\n return null;\n }\n var existChild = 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.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 && !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 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 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 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 / 2)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (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 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) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/** @private */\nexport function lineBreakLabelTrim(maxWidth, text, font) {\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).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).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) {\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 renderOptions = {\n 'id': option.id,\n 'x': option.x,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.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 htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n htmlObject.style.textAnchor = option.anchor;\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).height);\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\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': option.x, '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.element.clientWidth;\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).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}\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}\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) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style));\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) {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\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 : '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 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","import { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n * @param {string|string[]} from?\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var isAnd;\n var ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (var i = 0; i < predicate.length; i++) {\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\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 { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = \"(\" + res + \")\";\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n selected[splits[0]].push(splits[1]);\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + _this.options.select + \"=\" + selected[expand].join(',') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation \n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data;\n data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n * @param {string} url\n * @param {Query} query?\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems;\n cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","import { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests. \n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests. \n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n ;\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n ;\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * To return the sorting function based on the string.\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n * @param {Object[]} json\n * @param {string} field\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: function (value) {\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement } 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 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 (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\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 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 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 = 16; // scrollbar element height is 16.\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\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);\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.opposedPosition) {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\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.opposedPosition) {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\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 }\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 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 var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\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, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.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, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.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 || chart.visibleSeries[0].type.indexOf('Bar') >= 0)) {\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 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, 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) + ' ' + (rect.y - plotY) +\n ' L ' + (rect.x + rect.width + plotX) + ' ' + (rect.y + rect.height + plotY),\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 tickSize = axis.opposedPosition ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (axis.opposedPosition) ? 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) ? axis.opposedPosition ? 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) {\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 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.opposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n padding = (axis.opposedPosition) ? padding : -padding;\n var defaultAnchor = ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) ? 'end' : 'start';\n defaultAnchor = chart.isRtlEnabled ? ((axis.opposedPosition) ? 'end' : 'start') : defaultAnchor;\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 for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n pointX = isLabelInside ? (rect.x - padding) : (rect.x + padding + scrollBarHeight);\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 = ((elementSize.height / 4) * 3) + 3;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? (pointY + textPadding) : pointY + (elementSize.height / 4)));\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 pointX = isAxisBreakLabel ? this.getAxisLabelXvalue(pointX, axis, elementSize.width) : pointX;\n var anchor = isAxisBreakLabel ? this.getAnchor(axis) : defaultAnchor;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor, axis.visibleLabels[i].text);\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (axis.isInversed && i === len - 1)) && options.y > rect.y + rect.height) ||\n (((i === len - 1) || (axis.isInversed && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (axis.isInversed && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (axis.isInversed && i === 0)) && (options.y - elementSize.height * 0.5 < rect.y)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n }\n textElement(chart.renderer, options, axis.labelStyle, axis.labelStyle.color || chart.themeStyle.axisLabel, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas);\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.opposedPosition;\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 scrollBarHeight = (axis.opposedPosition ? 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 = ((axis.opposedPosition && axis.labelPosition === 'Inside') || (!axis.opposedPosition\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.isInversed ? (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 if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\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 labelRotation = (axis.opposedPosition) ? 90 : -90;\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 = axis.opposedPosition ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n var x = rect.x + padding;\n var y = rect.y + rect.height * 0.5;\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y - axis.labelPadding - titleSize, 'middle', axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitle, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n element.setAttribute('tabindex', axis.tabIndex.toString());\n element.setAttribute('aria-label', axis.description || axis.title);\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 tickSize = (axis.opposedPosition) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (axis.opposedPosition) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.opposedPosition ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks') ?\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') {\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.opposedPosition ? -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 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((axis.isInversed ? (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(((axis.isInversed ? (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.opposedPosition;\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 previousEnd = axis.isInversed ? (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 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);\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 ? (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.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n if (axis.edgeLabelPlacement && (angle === 0)) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (axis.isInversed && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (axis.isInversed && i === 0)) && (options.x + width > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (axis.isInversed && i === len - 1)) && options.x < rect.x) {\n intervalLength -= (rect.x - options.x);\n options.x = pointX = rect.x;\n }\n else if ((i === len - 1 || (axis.isInversed && i === 0)) && ((options.x + width) > rect.x + rect.width)) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim') {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else {\n intervalLength = width;\n }\n options.x = pointX = rect.x + rect.width - intervalLength;\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\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 (!axis.isInversed ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = axis.isInversed ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = axis.isInversed ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = axis.isInversed ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = axis.isInversed ? 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) + 10));\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 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 // label Rotataion calculation (End)\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabel, labelElement, (axis.opposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, null, null, label.size, isRotatedLabelIntersect, chart.enableCanvas);\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 /**\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' : (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 startX = void 0;\n var startY = axisRect.y + ((axis.opposedPosition ? -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 = ((axis.opposedPosition && axis.labelPosition === 'Inside') ||\n (!axis.opposedPosition && 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.isInversed ? (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) {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\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 if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\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.setAttribute('style', 'pointer-events: none');\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, true, '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) : 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);\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.opposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, rect.x + rect.width * 0.5, rect.y + padding, 'middle', axis.titleCollection);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitle, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n element.setAttribute('aria-label', axis.description || axis.title);\n element.setAttribute('tabindex', axis.tabIndex.toString());\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","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint } 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.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.isInversed ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isInversed ? 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.isInversed;\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 if (value >= series.xMin - 0.5 && value <= series.xMax + 0.5) {\n for (var i = 0; i < xData.length; 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.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\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 var closest = this.getClosest(series, value, xvalues);\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (closest === point.xValue && point.visible) {\n return new PointData(point, series);\n }\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 var collection = [];\n for (var index = 0; index < visibleSeries.length; index++) {\n collection = collection.concat(visibleSeries[index].xData);\n }\n return collection.filter(function (item, index) {\n return index === collection.indexOf(item);\n });\n };\n return ChartData;\n}());\nexport { ChartData };\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 */\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 } 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 { sort, 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(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: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, 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('Circle')\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(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(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 * 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 }\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('0')\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 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 /** @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 this.currentViewData = sort(extend([], this.currentViewData, null, true), [this.yName], true);\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 = Object.keys(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 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 }\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) {\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 this.chart['spline' + (isArea ? '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 }\n };\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\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;\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData[i]);\n point.high = getObjectValueByMappingString(this.high, currentViewData[i]);\n point.low = getObjectValueByMappingString(this.low, currentViewData[i]);\n point.open = getObjectValueByMappingString(this.open, currentViewData[i]);\n point.close = getObjectValueByMappingString(this.close, currentViewData[i]);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData[i]);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData[i]);\n if (this instanceof Series) {\n point.y = getObjectValueByMappingString(this.yName, currentViewData[i]);\n point.size = getObjectValueByMappingString(this.size, currentViewData[i]);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData[i]);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData[i]);\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.isAdvancedColorSupported()) {\n if (this.colorName && this.colorName.length > 0) {\n point.colorValue = getObjectValueByMappingString(this.colorName, currentViewData[i]);\n }\n else {\n point.colorValue = getObjectValueByMappingString(this.yName, currentViewData[i]);\n }\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (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 return true;\n }\n return false;\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;\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)) ? 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 '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.labels.indexOf(pointX) < 0) {\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.labels.indexOf(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('0')\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.delayedAnimation = false;\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 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 stackingSeies = [];\n var stackedValues = [];\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_1 = seriesCollection; _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 : Math.min.apply(0, startValues);\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 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_2 = seriesCollection; _i < seriesCollection_2.length; _i++) {\n var series = seriesCollection_2[_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 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 === 'Scatter' || this.type === 'Bubble') ?\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') {\n markerHeight = (chart.primaryYAxis.maximum || chart.primaryXAxis.maximum) ? 0 : (this.marker.height + explodeValue) / 2;\n markerWidth = (chart.primaryYAxis.maximum || chart.primaryXAxis.maximum) ? 0 : (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: -markerWidth, y: -markerHeight,\n width: this.clipRect.width + markerWidth * 2,\n height: this.clipRect.height + markerHeight * 2\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.chart.enableCanvas || this.type === 'Scatter' || this.type === 'Bubble') {\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\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 if (this.type === 'Scatter' || this.type === 'Bubble') {\n appendChildElement(false, chart.seriesElements, this.seriesElement, redraw);\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 && chart.animateSeries) {\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('#2ecd71')\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property('#e74c3d')\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: 'transparent', 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('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({}, 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(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 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","/* eslint-disable @typescript-eslint/ban-types */\nimport { 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})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined } 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 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.crosshair.enable || (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 var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\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, commonXvalues);\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 var length = this.previousPoints.length;\n if (this.currentPoints.length > 0) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && this.previousPoints[0].point !== this.currentPoints[0].point)) {\n if (this.previousPoints.length > 0) {\n this.removeHighlightedMarker();\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.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 _b = 0, _c = this.currentPoints; _b < _c.length; _b++) {\n var data_1 = _c[_b];\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 this.markerExplode = +setTimeout(function () {\n _this.removeHighlightedMarker();\n }, 2000);\n }\n this.currentPoints = [];\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;\n if (shape === 'None') {\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) + 5, (marker.height || seriesMarker.height) + 5);\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 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', 'EJ2-Trackball');\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 this.chart.svgObject.appendChild(symbol);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeHighlightedMarker = function () {\n var elements = document.getElementsByClassName('EJ2-Trackball');\n for (var i = 0, len = elements.length; i < len; i++) {\n remove(elements[0]);\n }\n this.previousPoints = [];\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 @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\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 { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\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 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 ? 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 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 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 options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: series.clipRect.width + 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.isInversed ? region.width : 0;\n }\n else {\n y += series.yAxis.isInversed ? 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;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn') ? 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 @typescript-eslint/no-inferrable-types */\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding } from '../model/base';\nimport { Theme } from '../model/theme';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\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 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('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex(Theme.legendLabelFont, 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(5)\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(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(Theme.legendTitleFont, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", 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 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.pageXCollections = []; // pages of x locations\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');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\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 * 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 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 this.library.getLegendBounds(availableSize, this.legendBounds, legend);\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) {\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 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 : 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 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 var maxHeight = 0;\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 this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\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.isPaging && !this.isVertical) {\n titlePlusArrowWidth = this.isTitle && titlePosition === 'Left' ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\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 start = new ChartLocation(this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left, 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 ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + padding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isChartControl || this.isBulletChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\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 for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (this.chart.getModuleName() === 'accumulationchart') {\n // eslint-disable-next-line max-len\n legendOption.fill = (this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\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 !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', count)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', legend.tabIndex.toString());\n legendSeriesGroup.setAttribute('aria-label', legend.description ||\n this.accessbilityText);\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, count);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count);\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('style', 'outline: none; 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 if (this.isPaging) {\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 x2 = this.isVertical ? '0' : '100';\n var y2 = this.isVertical ? '100' : '0';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', 0 + '%');\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);\n var endTextSize = measureText(endLabel, legend.textStyle);\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 + legend.padding + (textWidth - startTextSize.width);\n endLabelX = legendBounds.x + linearBarWidth + (3 * legend.padding) + textWidth;\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 textOptions = new TextOption('', startLabelX, startLabelY, '', 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.legendLabel : hiddenColor;\n var isCanvas = 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(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n textOptions = new TextOption('', endLabelX, endLabelY, '', 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(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\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 !== '') {\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));\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle);\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 = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : '';\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, legendGroup);\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 = chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\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 += padding + (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart') && 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.setAttribute('style', '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, i) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' && (legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1));\n var isCustomBorder = this.chart.getModuleName() === 'chart' &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = 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[i].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 && i < this.chart.visibleSeries.length) {\n var seriesBorder = this.chart.visibleSeries[i].border;\n borderColor = seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', i), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), 1, '', '');\n var textSize = measureText(legendOption.text, this.legend.textStyle);\n var x = this.legend.isInversed ? 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(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: i\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_', i);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n // eslint-disable-next-line max-len\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(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) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabel : hiddenColor;\n var isCanvas = this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', i);\n textOptions.text = legendOption.text;\n textOptions.x = legend.isInversed ? legendOption.location.x - (legend.shapeWidth / 2) :\n legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\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(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n if (element) {\n element.setAttribute('aria-label', legend.description || this.accessbilityText);\n }\n if (isCanvas) {\n var textSize = measureText(textOptions.text, legend.textStyle);\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 }\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 BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = '#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 symbolOption = new PathOption(this.legendID + '_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.isBulletChartControl || !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 if (paginggroup) {\n paginggroup.setAttribute('style', 'cursor: pointer');\n }\n this.clipPathHeight = rowCount * (this.maxItemHeight + legend.padding);\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.fivePixel + 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);\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 + 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.backwardArrowOpacity);\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(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5, 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 = '1/' + this.totalPages;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = this.currentPageNumber + '/' + this.totalNoOfPages;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, legend.textStyle.color, paginggroup, false, false, false, false, null, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\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.fivePixel - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = this.legendID + '_pagedown';\n symbolOption.opacity = !legend.enablePages ? this.forwardArrowOpacity : 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) - padding;\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(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5), 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(' + (bounds.width - (2 * (iconSize + padding) +\n padding + size.width)) + ', ' + 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(null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\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 (pagingText, page, pageNumber, legend) {\n var size = (this.clipPathHeight) * page;\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && this.isVertical) {\n size = this.pageXCollections[page * this.maxColumns] - this.legendBounds.x;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n 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 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(pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(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) {\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) {\n this.location = { x: 0, y: 0 };\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 }\n return LegendOptions;\n}());\nexport { LegendOptions };\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 chart[type + 'IndicatorModule'].initDataSource(this, chart);\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","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\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","/**\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","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","import { 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","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 { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n /**\n * @hidden\n * @private\n */\n _this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n _this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isImage\", {\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get: function () {\n return this.isImageStream;\n },\n set: function (value) {\n this.isImageStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isFont\", {\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get: function () {\n return this.isFontStream;\n },\n set: function (value) {\n this.isFontStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\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 * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\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 { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.length, this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\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 * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = '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 var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\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 { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isImage = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\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 { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\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 * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\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 * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \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 { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n /* tslint:disable */\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\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 * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\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 { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\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 * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\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 { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\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 { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { print as printWindow, createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { getElement, removeElement } from '../utils/helper';\nimport { beforePrint, afterExport } from '../model/constants';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap, SizeF, PdfStandardFont, PdfPageTemplateElement, PdfSolidBrush, PdfColor } from '@syncfusion/ej2-pdf-export';\nvar ExportUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function ExportUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements\n *\n * @param elements\n */\n ExportUtils.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 ExportUtils.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 return div;\n };\n /**\n * To export the file as image/svg format\n *\n * @param type\n * @param fileName\n */\n ExportUtils.prototype.export = function (type, fileName, orientation, controls, width, height, isVertical, header, footer) {\n var _this = this;\n var controlValue = this.getControlsValue(controls, isVertical);\n width = width ? width : controlValue.width;\n height = height ? height : controlValue.height;\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n var image;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': width.toString(),\n 'height': height.toString()\n }\n });\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var svgData = '' +\n controlValue.svg.outerHTML +\n '';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (Browser.info.name === 'msie') {\n var svg = new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'application/octet-stream' });\n window.navigator.msSaveOrOpenBlob(svg, fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n this.triggerDownload(fileName, type, url, isDownload);\n }\n }\n else if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n image = canvas.toDataURL();\n if (type === 'PDF') {\n this.exportPdf(canvas, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n this.doexport(type, image, fileName);\n }\n }\n else {\n var image_1 = new Image();\n var ctx_1 = element.getContext('2d');\n image_1.onload = (function () {\n ctx_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (type === 'PDF') {\n _this.exportPdf(element, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(element.toBlob(null), fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n _this.triggerDownload(fileName, type, element.toDataURL('image/' + type.toLowerCase()), isDownload);\n }\n }\n });\n image_1.src = url;\n }\n if (!isCanvas) {\n removeElement(document.getElementById(this.control.element.id + '_canvas'));\n }\n };\n /**\n * To get data url for charts.\n *\n * @param chart\n */\n ExportUtils.prototype.getDataUrl = function (chart) {\n var controlValue = this.getControlsValue([chart]);\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': controlValue.width.toString(),\n 'height': controlValue.height.toString()\n }\n });\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return { element: canvas, dataUrl: canvas.toDataURL() };\n }\n else {\n var image_2 = new Image();\n var ctx_2 = element.getContext('2d');\n image_2.onload = (function () {\n ctx_2.drawImage(image_2, 0, 0);\n window.URL.revokeObjectURL(url);\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return argsData.dataUrl;\n });\n image_2.src = url;\n return { element: element, blobUrl: url };\n }\n };\n /**\n * To trigger the download element\n *\n * @param fileName\n * @param type\n * @param url\n */\n ExportUtils.prototype.triggerDownload = function (fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n };\n /**\n * To get the maximum size value\n *\n * @param controls\n * @param name\n */\n // eslint-disable-next-line max-len\n ExportUtils.prototype.getControlsValue = function (controls, isVertical) {\n var width = 0;\n var height = 0;\n var isCanvas = this.control.enableCanvas;\n var svgObject = new SvgRenderer('').createSvg({\n id: 'Svg_Export_Element',\n width: 200, height: 200\n });\n controls.map(function (control) {\n var svg = control.svgObject.cloneNode(true);\n var groupEle = control.renderer.createGroup({\n style: (isNullOrUndefined(isVertical) || isVertical) ? 'transform: translateY(' + height + 'px)' :\n 'transform: translateX(' + width + 'px)'\n });\n if (!isCanvas) {\n groupEle.appendChild(svg);\n }\n width = (isNullOrUndefined(isVertical) || isVertical) ? Math.max(control.availableSize.width, width) :\n width + control.availableSize.width;\n height = (isNullOrUndefined(isVertical) || isVertical) ? height + control.availableSize.height :\n Math.max(control.availableSize.height, height);\n if (!isCanvas) {\n svgObject.appendChild(groupEle);\n }\n });\n if (!isCanvas) {\n svgObject.setAttribute('width', width + '');\n svgObject.setAttribute('height', height + '');\n }\n return {\n 'width': width,\n 'height': height,\n 'svg': svgObject\n };\n };\n ExportUtils.prototype.createCanvas = function () {\n var chart = this.control;\n this.canvasRender(true, chart);\n var canvas = chart.svgObject;\n this.canvasRender(false, chart);\n return canvas;\n };\n /**\n * To convert svg chart into canvas chart to fix export issue in IE\n * We cant export svg to other formats in IE\n *\n * @param enableCanvas\n * @param chart\n * @param enableCanvas\n * @param chart\n */\n ExportUtils.prototype.canvasRender = function (enableCanvas, chart) {\n chart.enableCanvas = enableCanvas;\n chart['preRender']();\n chart['render']();\n };\n // eslint-disable-next-line max-len\n ExportUtils.prototype.exportPdf = function (element, orientation, width, height, isDownload, fileName, header, footer) {\n var document = new PdfDocument();\n var margin = document.pageSettings.margins;\n var pdfDefaultWidth = document.pageSettings.width;\n var pdfDefaultHeight = document.pageSettings.height;\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n var exactWidth = (pdfDefaultWidth < width) ? (width + margin.left + margin.right) : pdfDefaultWidth;\n var exactHeight = (pdfDefaultHeight < height) ? (height + margin.top + margin.bottom) : pdfDefaultHeight;\n if (header !== undefined) {\n var font = new PdfStandardFont(1, header.fontSize || 15);\n var pdfHeader = new PdfPageTemplateElement(exactWidth, 40);\n pdfHeader.graphics.drawString(header.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), header.x, header.y, null);\n document.template.top = pdfHeader;\n }\n if (footer !== undefined) {\n var font = new PdfStandardFont(1, footer.fontSize || 15);\n var pdfFooter = new PdfPageTemplateElement(exactWidth, 40);\n pdfFooter.graphics.drawString(footer.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), footer.x, footer.y, null);\n document.template.bottom = pdfFooter;\n }\n document.pageSettings.size = new SizeF(exactWidth, exactHeight);\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, width, height);\n if (isDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n };\n ExportUtils.prototype.doexport = function (type, image, fileName) {\n var images = [];\n var fileType = type || 'JPG';\n images = [image];\n this.exportImage(images, fileName, fileType, image);\n };\n ExportUtils.prototype.exportImage = function (images, fileName, fileType, image) {\n var buffers = [];\n var length = (!(images instanceof HTMLElement)) ? images.length : 0;\n for (var g = 0; g < length; g++) {\n image = images[g];\n image = image.replace(/^data:[a-z]*;,/, '');\n var image1 = image.split(',');\n var byteString = atob(image1[1]);\n var buffer = new ArrayBuffer(byteString.length);\n var intArray = new Uint8Array(buffer);\n for (var i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n buffers.push(buffer);\n }\n for (var j = 0; j < buffers.length; j++) {\n var b = new Blob([buffers[j]], { type: 'application/octet-stream' });\n if (Browser.info.name === 'msie') {\n window.navigator.msSaveOrOpenBlob(b, fileName + '.' + fileType.toLocaleLowerCase());\n }\n }\n };\n return ExportUtils;\n}());\nexport { ExportUtils };\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/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/ban-types */\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 } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, Theme, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, ChartArea, Font, Indexes, TooltipSettings } 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 } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, 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 { ExportUtils } from '../common/utils/export';\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 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, \"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.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n _this.chartid = 57723;\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-z0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n for (var i = 0; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1) {\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.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 if (this.stockChart.series[0].volume !== '') {\n this.tooltip.format += '
Volume : ${point.volume}';\n }\n }\n this.animateSeries = false;\n }\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\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 if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\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 };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.createChartSvg();\n this.setTheme();\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.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 };\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 };\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.series[0].type === 'Scatter' || this.series[0].type === 'Bubble') ?\n this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' }) :\n this.renderer.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.setAttribute('style', '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.setAttribute('style', '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 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);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries(item);\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n item.renderSeries(this);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\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 if (!this.enableCanvas) {\n this.seriesElements.appendChild(appendClipElement(this.redraw, options, this.renderer));\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 var divElement;\n if ((item.type === 'Bubble' || item.type === 'Scatter')) {\n svgElement = !svgElement ? this.svgRenderer.createSvg({ id: this.element.id + '_series_svg',\n width: this.availableSize.width, height: this.availableSize.height }) : svgElement;\n divElement = !divElement ? this.createElement('div', { id: this.element.id + '_series' }) : divElement;\n divElement.setAttribute('style', 'position: absolute');\n var mainElement = document.getElementById(this.element.id + '_Secondary_Element');\n divElement.appendChild(svgElement);\n mainElement.appendChild(divElement);\n }\n svgElement = (this.enableCanvas && (item.type === 'Bubble' || item.type === 'Scatter')) ?\n svgElement : this.svgObject;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var canvas = (this.enableCanvas && (item.type === 'Bubble' || item.type === 'Scatter')) ?\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)) {\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 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 };\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 = 15;\n var left = margin.left;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width);\n titleHeight = (measureText(this.title, this.titleStyle).height * this.titleCollection.length) + padding;\n if (this.subTitle) {\n var maxWidth = 0;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle).height * this.subTitleCollection.length) +\n padding;\n }\n }\n var top = margin.top + subTitleHeight + titleHeight + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\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 ExportUtils(this);\n exportChart.print(id);\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 for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\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 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 && series.yAxisName !== null) ||\n (series.xAxisName !== null && series.yAxisName === null) ||\n (series.xAxisName !== null && series.yAxisName !== null))) {\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.renderTitle = function () {\n var rect;\n var margin = this.margin;\n if (this.title) {\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var elementSize = measureText(this.title, this.titleStyle);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var options = new TextOption(this.element.id + '_ChartTitle', titlePositionX(rect, this.titleStyle), this.margin.top + ((elementSize.height) * 3 / 4), getAnchor, this.titleCollection, '', '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.chartTitle, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas);\n if (element) {\n element.setAttribute('aria-label', this.description || this.title);\n element.setAttribute('tabindex', this.tabIndex.toString());\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 anchor = function (alignment) {\n return alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n };\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).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, anchor(this.subTitleStyle.textAlignment), this.subTitleCollection, '', '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.chartTitle, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas);\n if (element) {\n element.setAttribute('aria-label', this.description || this.subTitle);\n element.setAttribute('tabindex', this.tabIndex.toString());\n }\n };\n Chart.prototype.renderBorder = function () {\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5, width * 0.5, 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 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 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 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 /**\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, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\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, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, 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 };\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.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);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\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.isBlazor ? {} : 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 (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 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 (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.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 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 this.trigger(chartMouseClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.clickCount++;\n var timeInterval = 0;\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 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 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);\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;\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.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan || zooming.enableScrollbar)) {\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') {\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 if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\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 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 ? 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 * Called internally if any of the property value changed.\n * @private\n */\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\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 refreshBounds = this.axisChange(newProp.primaryXAxis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n break;\n case 'primaryYAxis':\n refreshBounds = this.axisChange(newProp.primaryYAxis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\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 refreshBounds = refreshBounds || this.axisChange(newProp.axes[index]);\n if (!newProp.axes[index].crosshairTooltip) {\n refreshBounds = true;\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 (series && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close ||\n series.fill || series.name || series.marker || 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 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);\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 '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 }\n break;\n }\n }\n if (!refreshBounds && renderer) {\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.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(Theme.chartTitleFont, Font)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex(Theme.chartSubTitleFont, Font)\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('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, \"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","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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar TrendlinesDirective = /** @class */ (function (_super) {\n __extends(TrendlinesDirective, _super);\n function TrendlinesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TrendlinesDirective.prototype.render = function () {\n return;\n };\n TrendlinesDirective = __decorate([\n EJComponentDecorator({})\n ], TrendlinesDirective);\n return TrendlinesDirective;\n}(Vue));\nexport { TrendlinesDirective };\nexport var TrendlinesPlugin = {\n name: 'e-trendlines',\n install: function (Vue) {\n Vue.component(TrendlinesPlugin.name, TrendlinesDirective);\n }\n};\nvar TrendlineDirective = /** @class */ (function (_super) {\n __extends(TrendlineDirective, _super);\n function TrendlineDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TrendlineDirective.prototype.render = function () {\n return;\n };\n TrendlineDirective = __decorate([\n EJComponentDecorator({})\n ], TrendlineDirective);\n return TrendlineDirective;\n}(Vue));\nexport { TrendlineDirective };\nexport var TrendlinePlugin = {\n name: 'e-trendline',\n install: function (Vue) {\n Vue.component(TrendlinePlugin.name, TrendlineDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar SegmentsDirective = /** @class */ (function (_super) {\n __extends(SegmentsDirective, _super);\n function SegmentsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SegmentsDirective.prototype.render = function () {\n return;\n };\n SegmentsDirective = __decorate([\n EJComponentDecorator({})\n ], SegmentsDirective);\n return SegmentsDirective;\n}(Vue));\nexport { SegmentsDirective };\nexport var SegmentsPlugin = {\n name: 'e-segments',\n install: function (Vue) {\n Vue.component(SegmentsPlugin.name, SegmentsDirective);\n }\n};\nvar SegmentDirective = /** @class */ (function (_super) {\n __extends(SegmentDirective, _super);\n function SegmentDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SegmentDirective.prototype.render = function () {\n return;\n };\n SegmentDirective = __decorate([\n EJComponentDecorator({})\n ], SegmentDirective);\n return SegmentDirective;\n}(Vue));\nexport { SegmentDirective };\nexport var SegmentPlugin = {\n name: 'e-segment',\n install: function (Vue) {\n Vue.component(SegmentPlugin.name, SegmentDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar SeriesCollectionDirective = /** @class */ (function (_super) {\n __extends(SeriesCollectionDirective, _super);\n function SeriesCollectionDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesCollectionDirective.prototype.render = function () {\n return;\n };\n SeriesCollectionDirective = __decorate([\n EJComponentDecorator({})\n ], SeriesCollectionDirective);\n return SeriesCollectionDirective;\n}(Vue));\nexport { SeriesCollectionDirective };\nexport var SeriesCollectionPlugin = {\n name: 'e-series-collection',\n install: function (Vue) {\n Vue.component(SeriesCollectionPlugin.name, SeriesCollectionDirective);\n }\n};\nvar SeriesDirective = /** @class */ (function (_super) {\n __extends(SeriesDirective, _super);\n function SeriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesDirective.prototype.render = function () {\n return;\n };\n SeriesDirective = __decorate([\n EJComponentDecorator({})\n ], SeriesDirective);\n return SeriesDirective;\n}(Vue));\nexport { SeriesDirective };\nexport var SeriesPlugin = {\n name: 'e-series',\n install: function (Vue) {\n Vue.component(SeriesPlugin.name, SeriesDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar StripLinesDirective = /** @class */ (function (_super) {\n __extends(StripLinesDirective, _super);\n function StripLinesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StripLinesDirective.prototype.render = function () {\n return;\n };\n StripLinesDirective = __decorate([\n EJComponentDecorator({})\n ], StripLinesDirective);\n return StripLinesDirective;\n}(Vue));\nexport { StripLinesDirective };\nexport var StripLinesPlugin = {\n name: 'e-striplines',\n install: function (Vue) {\n Vue.component(StripLinesPlugin.name, StripLinesDirective);\n }\n};\nvar StripLineDirective = /** @class */ (function (_super) {\n __extends(StripLineDirective, _super);\n function StripLineDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StripLineDirective.prototype.render = function () {\n return;\n };\n StripLineDirective = __decorate([\n EJComponentDecorator({})\n ], StripLineDirective);\n return StripLineDirective;\n}(Vue));\nexport { StripLineDirective };\nexport var StripLinePlugin = {\n name: 'e-stripline',\n install: function (Vue) {\n Vue.component(StripLinePlugin.name, StripLineDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar CategoriesDirective = /** @class */ (function (_super) {\n __extends(CategoriesDirective, _super);\n function CategoriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CategoriesDirective.prototype.render = function () {\n return;\n };\n CategoriesDirective = __decorate([\n EJComponentDecorator({})\n ], CategoriesDirective);\n return CategoriesDirective;\n}(Vue));\nexport { CategoriesDirective };\nexport var CategoriesPlugin = {\n name: 'e-categories',\n install: function (Vue) {\n Vue.component(CategoriesPlugin.name, CategoriesDirective);\n }\n};\nvar CategoryDirective = /** @class */ (function (_super) {\n __extends(CategoryDirective, _super);\n function CategoryDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CategoryDirective.prototype.render = function () {\n return;\n };\n CategoryDirective = __decorate([\n EJComponentDecorator({})\n ], CategoryDirective);\n return CategoryDirective;\n}(Vue));\nexport { CategoryDirective };\nexport var CategoryPlugin = {\n name: 'e-category',\n install: function (Vue) {\n Vue.component(CategoryPlugin.name, CategoryDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar MultiLevelLabelsDirective = /** @class */ (function (_super) {\n __extends(MultiLevelLabelsDirective, _super);\n function MultiLevelLabelsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MultiLevelLabelsDirective.prototype.render = function () {\n return;\n };\n MultiLevelLabelsDirective = __decorate([\n EJComponentDecorator({})\n ], MultiLevelLabelsDirective);\n return MultiLevelLabelsDirective;\n}(Vue));\nexport { MultiLevelLabelsDirective };\nexport var MultiLevelLabelsPlugin = {\n name: 'e-multilevellabels',\n install: function (Vue) {\n Vue.component(MultiLevelLabelsPlugin.name, MultiLevelLabelsDirective);\n }\n};\nvar MultiLevelLabelDirective = /** @class */ (function (_super) {\n __extends(MultiLevelLabelDirective, _super);\n function MultiLevelLabelDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MultiLevelLabelDirective.prototype.render = function () {\n return;\n };\n MultiLevelLabelDirective = __decorate([\n EJComponentDecorator({})\n ], MultiLevelLabelDirective);\n return MultiLevelLabelDirective;\n}(Vue));\nexport { MultiLevelLabelDirective };\nexport var MultiLevelLabelPlugin = {\n name: 'e-multilevellabel',\n install: function (Vue) {\n Vue.component(MultiLevelLabelPlugin.name, MultiLevelLabelDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AxesDirective = /** @class */ (function (_super) {\n __extends(AxesDirective, _super);\n function AxesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxesDirective.prototype.render = function () {\n return;\n };\n AxesDirective = __decorate([\n EJComponentDecorator({})\n ], AxesDirective);\n return AxesDirective;\n}(Vue));\nexport { AxesDirective };\nexport var AxesPlugin = {\n name: 'e-axes',\n install: function (Vue) {\n Vue.component(AxesPlugin.name, AxesDirective);\n }\n};\nvar AxisDirective = /** @class */ (function (_super) {\n __extends(AxisDirective, _super);\n function AxisDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisDirective.prototype.render = function () {\n return;\n };\n AxisDirective = __decorate([\n EJComponentDecorator({})\n ], AxisDirective);\n return AxisDirective;\n}(Vue));\nexport { AxisDirective };\nexport var AxisPlugin = {\n name: 'e-axis',\n install: function (Vue) {\n Vue.component(AxisPlugin.name, AxisDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar RowsDirective = /** @class */ (function (_super) {\n __extends(RowsDirective, _super);\n function RowsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RowsDirective.prototype.render = function () {\n return;\n };\n RowsDirective = __decorate([\n EJComponentDecorator({})\n ], RowsDirective);\n return RowsDirective;\n}(Vue));\nexport { RowsDirective };\nexport var RowsPlugin = {\n name: 'e-rows',\n install: function (Vue) {\n Vue.component(RowsPlugin.name, RowsDirective);\n }\n};\nvar RowDirective = /** @class */ (function (_super) {\n __extends(RowDirective, _super);\n function RowDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RowDirective.prototype.render = function () {\n return;\n };\n RowDirective = __decorate([\n EJComponentDecorator({})\n ], RowDirective);\n return RowDirective;\n}(Vue));\nexport { RowDirective };\nexport var RowPlugin = {\n name: 'e-row',\n install: function (Vue) {\n Vue.component(RowPlugin.name, RowDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.prototype.render = function () {\n return;\n };\n ColumnsDirective = __decorate([\n EJComponentDecorator({})\n ], ColumnsDirective);\n return ColumnsDirective;\n}(Vue));\nexport { ColumnsDirective };\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.prototype.render = function () {\n return;\n };\n ColumnDirective = __decorate([\n EJComponentDecorator({})\n ], ColumnDirective);\n return ColumnDirective;\n}(Vue));\nexport { ColumnDirective };\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar RangeColorSettingsDirective = /** @class */ (function (_super) {\n __extends(RangeColorSettingsDirective, _super);\n function RangeColorSettingsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RangeColorSettingsDirective.prototype.render = function () {\n return;\n };\n RangeColorSettingsDirective = __decorate([\n EJComponentDecorator({})\n ], RangeColorSettingsDirective);\n return RangeColorSettingsDirective;\n}(Vue));\nexport { RangeColorSettingsDirective };\nexport var RangeColorSettingsPlugin = {\n name: 'e-rangecolorsettings',\n install: function (Vue) {\n Vue.component(RangeColorSettingsPlugin.name, RangeColorSettingsDirective);\n }\n};\nvar RangeColorSettingDirective = /** @class */ (function (_super) {\n __extends(RangeColorSettingDirective, _super);\n function RangeColorSettingDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RangeColorSettingDirective.prototype.render = function () {\n return;\n };\n RangeColorSettingDirective = __decorate([\n EJComponentDecorator({})\n ], RangeColorSettingDirective);\n return RangeColorSettingDirective;\n}(Vue));\nexport { RangeColorSettingDirective };\nexport var RangeColorSettingPlugin = {\n name: 'e-rangecolorsetting',\n install: function (Vue) {\n Vue.component(RangeColorSettingPlugin.name, RangeColorSettingDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AnnotationsDirective = /** @class */ (function (_super) {\n __extends(AnnotationsDirective, _super);\n function AnnotationsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnnotationsDirective.prototype.render = function () {\n return;\n };\n AnnotationsDirective = __decorate([\n EJComponentDecorator({})\n ], AnnotationsDirective);\n return AnnotationsDirective;\n}(Vue));\nexport { AnnotationsDirective };\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 */\nvar AnnotationDirective = /** @class */ (function (_super) {\n __extends(AnnotationDirective, _super);\n function AnnotationDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnnotationDirective.prototype.render = function () {\n return;\n };\n AnnotationDirective = __decorate([\n EJComponentDecorator({})\n ], AnnotationDirective);\n return AnnotationDirective;\n}(Vue));\nexport { AnnotationDirective };\nexport var AnnotationPlugin = {\n name: 'e-annotation',\n install: function (Vue) {\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar SelectedDataIndexesDirective = /** @class */ (function (_super) {\n __extends(SelectedDataIndexesDirective, _super);\n function SelectedDataIndexesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectedDataIndexesDirective.prototype.render = function () {\n return;\n };\n SelectedDataIndexesDirective = __decorate([\n EJComponentDecorator({})\n ], SelectedDataIndexesDirective);\n return SelectedDataIndexesDirective;\n}(Vue));\nexport { SelectedDataIndexesDirective };\nexport var SelectedDataIndexesPlugin = {\n name: 'e-selecteddataindexes',\n install: function (Vue) {\n Vue.component(SelectedDataIndexesPlugin.name, SelectedDataIndexesDirective);\n }\n};\nvar SelectedDataIndexDirective = /** @class */ (function (_super) {\n __extends(SelectedDataIndexDirective, _super);\n function SelectedDataIndexDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectedDataIndexDirective.prototype.render = function () {\n return;\n };\n SelectedDataIndexDirective = __decorate([\n EJComponentDecorator({})\n ], SelectedDataIndexDirective);\n return SelectedDataIndexDirective;\n}(Vue));\nexport { SelectedDataIndexDirective };\nexport var SelectedDataIndexPlugin = {\n name: 'e-selecteddataindex',\n install: function (Vue) {\n Vue.component(SelectedDataIndexPlugin.name, SelectedDataIndexDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar IndicatorsDirective = /** @class */ (function (_super) {\n __extends(IndicatorsDirective, _super);\n function IndicatorsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IndicatorsDirective.prototype.render = function () {\n return;\n };\n IndicatorsDirective = __decorate([\n EJComponentDecorator({})\n ], IndicatorsDirective);\n return IndicatorsDirective;\n}(Vue));\nexport { IndicatorsDirective };\nexport var IndicatorsPlugin = {\n name: 'e-indicators',\n install: function (Vue) {\n Vue.component(IndicatorsPlugin.name, IndicatorsDirective);\n }\n};\nvar IndicatorDirective = /** @class */ (function (_super) {\n __extends(IndicatorDirective, _super);\n function IndicatorDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IndicatorDirective.prototype.render = function () {\n return;\n };\n IndicatorDirective = __decorate([\n EJComponentDecorator({})\n ], IndicatorDirective);\n return IndicatorDirective;\n}(Vue));\nexport { IndicatorDirective };\nexport var IndicatorPlugin = {\n name: 'e-indicator',\n install: function (Vue) {\n Vue.component(IndicatorPlugin.name, IndicatorDirective);\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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-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 = ['allowExport', 'allowMultiSelection', 'annotations', 'axes', 'background', 'backgroundImage', 'border', 'chartArea', 'columns', 'crosshair', 'currencyCode', 'dataSource', 'description', 'enableAnimation', 'enableAutoIntervalOnBothAxis', 'enableCanvas', 'enableExport', 'enablePersistence', 'enableRtl', 'enableSideBySidePlacement', 'height', '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', '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'];\n/**\n * Represents Vuejs chart Component\n * ```vue\n * \n * ```\n */\nvar ChartComponent = /** @class */ (function (_super) {\n __extends(ChartComponent, _super);\n function ChartComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = true;\n _this.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 _this.tagNameMapper = { \"e-series-collection\": \"e-series\", \"e-striplines\": \"e-stripLines\", \"e-multilevellabels\": \"e-multiLevelLabels\", \"e-rangecolorsettings\": \"e-rangeColorSettings\", \"e-selecteddataindexes\": \"e-selectedDataIndexes\" };\n _this.ej2Instances = new Chart({});\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 return _this;\n }\n ChartComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n ChartComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n ChartComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n ChartComponent.prototype.addAxes = function (axisCollection) {\n return this.ej2Instances.addAxes(axisCollection);\n };\n ChartComponent.prototype.addSeries = function (seriesCollection) {\n return this.ej2Instances.addSeries(seriesCollection);\n };\n ChartComponent.prototype.clearSeries = function () {\n return this.ej2Instances.clearSeries();\n };\n ChartComponent.prototype.createChartSvg = function () {\n return this.ej2Instances.createChartSvg();\n };\n ChartComponent.prototype.export = function (type, fileName) {\n return this.ej2Instances.export(type, fileName);\n };\n ChartComponent.prototype.getLocalizedLabel = function (key) {\n return this.ej2Instances.getLocalizedLabel(key);\n };\n ChartComponent.prototype.print = function (id) {\n return this.ej2Instances.print(id);\n };\n ChartComponent.prototype.processData = function (render) {\n return this.ej2Instances.processData(render);\n };\n ChartComponent.prototype.refreshLiveData = function () {\n return this.ej2Instances.refreshLiveData();\n };\n ChartComponent.prototype.removeAxis = function (index) {\n return this.ej2Instances.removeAxis(index);\n };\n ChartComponent.prototype.removeSeries = function (index) {\n return this.ej2Instances.removeSeries(index);\n };\n ChartComponent.prototype.setAnnotationValue = function (annotationIndex, content) {\n return this.ej2Instances.setAnnotationValue(annotationIndex, content);\n };\n ChartComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], ChartComponent);\n return ChartComponent;\n}(ComponentBase));\nexport { ChartComponent };\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","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { appendChildElement, redrawElement, pathAnimation, valueToCoefficient, getVisiblePoints } 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 /**\n * To get the position of the column series.\n *\n * @returns {DoubleRange} doubleRange\n * @private\n */\n ColumnBase.prototype.getSideBySideInfo = function (series) {\n if (series.chart.enableSideBySidePlacement && !series.position) {\n this.getSideBySidePositions(series);\n }\n var position = !series.chart.enableSideBySidePlacement ? 0 : series.position;\n var rectCount = !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 series.columnWidth; // 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 doubleRange = new DoubleRange(doubleRange.start * width, doubleRange.end * width);\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 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 stackingGroup = [];\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) {\n if (value.stackingGroup) {\n if (stackingGroup[value.stackingGroup] === undefined) {\n value.position = vSeries.rectCount;\n stackingGroup[value.stackingGroup] = vSeries.rectCount++;\n }\n else {\n value.position = stackingGroup[value.stackingGroup];\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.isInversed)) ? 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.isInversed)) ? 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);\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 var options = new PathOption(name, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, direction);\n var element = chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n switch (series.seriesType) {\n case 'XY':\n element.setAttribute('aria-label', point.x.toString() + ':' + point.yValue.toString());\n break;\n case 'HighLow':\n element.setAttribute('aria-label', point.x.toString() + ':' + point.high.toString() + ':' + point.low.toString());\n break;\n }\n appendChildElement(series.chart.enableCanvas, series.seriesElement, element, chart.redraw);\n if (!series.chart.enableCanvas) {\n pathAnimation(element, 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 this.animateRect(rectElements[count], series, point);\n count++;\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.isInversed) ? 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.isInversed) ? 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,\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) {\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","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 } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `BarSeries` module is used to render the bar series.\n */\nvar BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Bar series.\n *\n * @returns {void}\n * @private\n */\n BarSeries.prototype.render = function (series) {\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var sideBySideInfo = this.getSideBySideInfo(series);\n var rect;\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointBar = _a[_i];\n pointBar.symbolLocations = [];\n pointBar.regions = [];\n if (pointBar.visible && withInRange(series.points[pointBar.index - 1], pointBar, series.points[pointBar.index + 1], series)) {\n rect = this.getRectangle(pointBar.xValue + sideBySideInfo.start, pointBar.yValue, pointBar.xValue + sideBySideInfo.end, origin, series);\n argsData = this.triggerEvent(series, pointBar, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointBar, rect, series);\n this.drawRectangle(series, pointBar, rect, argsData);\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 BarSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * To destroy the bar series.\n *\n * @returns {void}\n * @private\n */\n BarSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n /**\n * Get module name\n */\n BarSeries.prototype.getModuleName = function () {\n return 'BarSeries';\n };\n return BarSeries;\n}(ColumnBase));\nexport { BarSeries };\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 @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Chart legend\n */\nimport { remove, Browser, extend } 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';\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') {\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 colors = [];\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 // 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.marker.shape, series.marker.visible));\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.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.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 };\n /** @private */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\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 rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle).height, legend.shapeHeight);\n var render = false;\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_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);\n if (legendOption.render) {\n render = true;\n legendWidth = shapeWidth + shapePadding + legendOption.textSize.width + 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 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 columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n }\n }\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.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n var previousBound = (prevLegend.location.x + textPadding + prevLegend.textSize.width);\n if ((previousBound + (legendOption.textSize.width + textPadding)) > (rect.x + rect.width + this.legend.shapeWidth / 2) ||\n this.isVertical) {\n legendOption.location.x = start.x;\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.maxItemHeight + 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.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.legend.shapeWidth / 2);\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle);\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 series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[index];\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 (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].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 series.chart[changeDetection] = true;\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.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event);\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event);\n }\n series.chart[changeDetection] = false;\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) {\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) {\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 chart.markerRender.removeHighlightedMarker();\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') {\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)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\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 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;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\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 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(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.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 return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\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 return null;\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","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-inferrable-types */\nimport { extend } from '@syncfusion/ej2-base';\nimport { ChartLocation, withInBounds } from '../../common/utils/helper';\nimport { Rect, Size, measureText } from '@syncfusion/ej2-svg-base';\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 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.setAttribute('style', 'pointer-events:none; position:absolute;z-index: 1');\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart) {\n if (data.series.enableTooltip) {\n 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 if (!series.marker.visible && item.series.type !== 'Scatter' && item.series.type !== 'Bubble') {\n this.previousPoints.shift();\n len -= 1;\n }\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 element.setAttribute('opacity', (highlight ? series.opacity / 2 : series.opacity).toString());\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 BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, extraPoints, templatePoint, customTemplate) {\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.accumulationTooltipModule;\n if (!module) { // For the tooltip enable is false.\n return;\n }\n var isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n var inverted = this.chart.requireInvertedAxis && series.isRectSeries;\n var position = null;\n if (this.text.length <= 1) {\n var contentSize = measureText(this.text[0], chart.tooltip.textStyle);\n var headerSize = (!(this.header === '' || this.header === '')) ? measureText(this.header, this.textStyle) :\n new Size(0, 0);\n // marker size + arrowpadding + 2 * padding + markerpadding\n var markerSize = 10 + 12 + (2 * 10) + 5;\n contentSize.width = Math.max(contentSize.width, headerSize.width) + ((shapes.length > 0) ? markerSize : 0);\n var heightPadding = 12 + (2 * 10) + (headerSize.height > 0 ? (2 * 10) : 0);\n contentSize.height = contentSize.height + headerSize.height + heightPadding;\n position = this.getCurrentPosition(isNegative, inverted);\n position = this.getPositionBySize(contentSize, new Rect(0, 0, bounds.width, bounds.height), location, position);\n isNegative = (position === 'Left') || (position === 'Bottom');\n inverted = (position === 'Left') || (position === 'Right');\n }\n // else if (tooltipPosition !== 'None' && this.text.length <= 1) {\n // position = tooltipPosition as TooltipPlacement;\n // isNegative = (position === 'Left') || (position === 'Bottom');\n // inverted = (position === 'Left') || (position === 'Right');\n // }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity,\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: chart.tooltip.shared,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || chart.tooltip.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: isNegative,\n inverted: inverted,\n arrowPadding: this.text.length > 1 || this.chart.stockChart ? 0 : 12,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n tooltipPlacement: position,\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 }, '#' + 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 = chart.tooltip.template;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = isNegative;\n this.svgTooltip.inverted = inverted;\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart ? 0 : 12;\n this.svgTooltip.tooltipPlacement = position;\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.getPositionBySize = function (textSize, bounds, arrowLocation, position) {\n var isTop = this.isTooltipFitPosition('Top', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isBottom = this.isTooltipFitPosition('Bottom', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isRight = this.isTooltipFitPosition('Right', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isLeft = this.isTooltipFitPosition('Left', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var tooltipPos;\n if (isTop || isBottom || isRight || isLeft) {\n if (position === 'Top') {\n tooltipPos = isTop ? 'Top' : (isBottom ? 'Bottom' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Bottom') {\n tooltipPos = isBottom ? 'Bottom' : (isTop ? 'Top' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Right') {\n tooltipPos = isRight ? 'Right' : (isLeft ? 'Left' : (isTop ? 'Top' : 'Bottom'));\n }\n else {\n tooltipPos = isLeft ? 'Left' : (isRight ? 'Right' : (isTop ? 'Top' : 'Bottom'));\n }\n }\n else {\n var size = [(arrowLocation.x - bounds.x), ((bounds.x + bounds.width) - arrowLocation.x),\n (arrowLocation.y - bounds.y), ((bounds.y + bounds.height) - arrowLocation.y)];\n var index = size.indexOf(Math.max.apply(this, size));\n position = (index === 0) ? 'Left' : (index === 1) ? 'Right' : (index === 2) ? 'Top' : 'Bottom';\n return position;\n }\n return tooltipPos;\n };\n BaseTooltip.prototype.isTooltipFitPosition = function (position, bounds, location, size) {\n var start = new ChartLocation(0, 0);\n var end = new ChartLocation(0, 0);\n switch (position) {\n case 'Top':\n start.x = location.x - (size.width / 2);\n start.y = location.y - size.height;\n end.x = location.x + (size.width / 2);\n end.y = location.y;\n break;\n case 'Bottom':\n start.x = location.x - (size.width / 2);\n start.y = location.y;\n end.x = location.x + (size.width / 2);\n end.y = location.y + size.height;\n break;\n case 'Right':\n start.x = location.x;\n start.y = location.y - (size.height / 2);\n end.x = location.x + size.width;\n end.y = location.y + (size.height / 2);\n break;\n case 'Left':\n start.x = location.x - size.width;\n start.y = location.y - (size.height / 2);\n end.x = location.x;\n end.y = location.y + (size.height / 2);\n break;\n }\n return (withInBounds(start.x, start.y, bounds) && withInBounds(end.x, end.y, bounds));\n };\n BaseTooltip.prototype.getCurrentPosition = function (isNegative, inverted) {\n var position;\n if (inverted) {\n position = isNegative ? 'Left' : 'Right';\n }\n else {\n position = isNegative ? 'Bottom' : 'Top';\n }\n return position;\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);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data) {\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 }\n this.chart.markerRender.removeHighlightedMarker();\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.innerHTML !== '
';\n this.stopAnimation();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact && isTemplateRendered) {\n this.chart.clearTemplate([tooltipTemplate.id], [0]);\n }\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","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 } 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.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 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 this.removeTooltip(2000);\n }\n else if (chart.startMove) {\n this.removeTooltip(2000);\n }\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 // 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) {\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 }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n */\n Tooltip.prototype.tooltip = function () {\n if ((this.chart.stockChart && this.chart.stockChart.onPanning)) {\n this.removeTooltip(1000);\n return null;\n }\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);\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) {\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 template;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: template,\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 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 _this.createTooltip(_this.chart, isFirst, _this.getSymbolLocation(point), point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), _this.chart.chartAxisLayoutPanel.seriesClipRect, null, _this.getTemplateText(point), _this.chart.tooltip.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 if (!this.chart.tooltip.enableMarker) {\n return 0;\n }\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 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 }\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 Tooltip.prototype.getTemplateText = function (data) {\n if (this.chart.tooltip.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 lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\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: [], headerText: '', textStyle: this.textStyle\n };\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.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, commonXvalues);\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 (data) {\n if (!chart.isBlazor) {\n this.triggerSharedTooltip(data, isFirst, this.getTooltipText(data), this.findHeader(data), extraPoints);\n }\n else {\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.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n argument.text.push(this.getTooltipText(data));\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : data;\n }\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 }\n if (chart.isBlazor && data) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerBlazorSharedTooltip(argument, lastData, extraPoints, chart, isFirst);\n }\n if (this.currentPoints.length > 0) {\n this.createTooltip(chart, isFirst, this.findSharedLocation(), this.currentPoints.length === 1 ? this.currentPoints[0].series.clipRect : null, null, this.findShapes(), this.findMarkerHeight(this.currentPoints[0]), chart.chartAxisLayoutPanel.seriesClipRect, extraPoints, this.chart.tooltip.template ? this.getTemplateText(data) : null, this.chart.tooltip.template ? argument.template : '');\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.triggerBlazorSharedTooltip = function (argument, point, extraPoints, chart, isFirst) {\n var _this = this;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle,\n data: argument.data\n };\n var blazorSharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n point = null;\n _this.createTooltip(chart, isFirst, _this.findSharedLocation(), null, null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), chart.chartAxisLayoutPanel.seriesClipRect, extraPoints);\n }\n else {\n extraPoints.push(point);\n }\n };\n blazorSharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, blazorSharedTooltip);\n };\n Tooltip.prototype.triggerSharedTooltip = function (point, isFirst, textCollection, headerText, extraPoints) {\n var _this = this;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText,\n point: point.point, series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle,\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 sharedTooltipSuccess = function (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 _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n _this.currentPoints.push(point);\n point = null;\n }\n else {\n extraPoints.push(point);\n }\n };\n sharedTooltipSuccess.bind(this, point, extraPoints);\n this.chart.trigger(tooltipRender, argsData, sharedTooltipSuccess);\n if (argsData.template) {\n this.chart.tooltip.template = argsData.template;\n }\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 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.symbolLocations[this.lierIndex - 4] :\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 {\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) {\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 }\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker();\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","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-inferrable-types */\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 / 365) * 4, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Quarter';\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 ? this.getDayFormat(axis, currentValue, previousValue) : '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 * Get intervalType month format\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n */\n NiceInterval.prototype.getMonthFormat = function (axis, currentValue, previousValue) {\n return ((new Date(currentValue).getFullYear() === new Date(previousValue).getFullYear()) ?\n (axis.isIntervalInDecimal ? 'MMM' : 'MMM d') : 'y MMM');\n };\n /**\n * Get intervalType day label format for the axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n */\n NiceInterval.prototype.getDayFormat = function (axis, currentValue, previousValue) {\n return (axis.valueType === 'DateTime' ?\n ((new Date(currentValue).getMonth() !== new Date(previousValue).getMonth()) ? 'MMMd' :\n (axis.isIntervalInDecimal ? 'd' : 'Ehm')) : 'yMd');\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' ? this.getMonthFormat(axis, currentValue, previousValue) : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\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 } 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 ticks = (axis.labelPlacement === 'BetweenTicks' && 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 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() : 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","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 /**\n * Render the Stacking column series.\n *\n * @returns {void}\n * @private\n */\n StackingColumnSeries.prototype.render = function (series) {\n series.isRectSeries = true;\n var sideBySideInfo = this.getSideBySideInfo(series);\n var rect;\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 rect = this.getRectangle(point.xValue + sideBySideInfo.start, stackedValue.endValues[point.index], point.xValue + sideBySideInfo.end, stackedValue.startValues[point.index], series);\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, rect, argsData);\n this.updateSymbolLocation(point, rect, series);\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","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 /**\n * Render Column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.render = function (series) {\n var rect;\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 rect = this.getRectangle(pointColumn.xValue + sideBySideInfo.start, pointColumn.yValue, pointColumn.xValue + sideBySideInfo.end, origin, series);\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, rect, series);\n this.drawRectangle(series, pointColumn, rect, argsData);\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","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\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) {\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 }\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';\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.isInversed;\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 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)\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);\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 = 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 rgbValue = convertHexToColor(colorNameToHex(this.fontBackground));\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 }\n textElement(chart.renderer, new TextOption(this.commonId + point.index + '_Text_' + i_1, xPos, yPos, 'middle', argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color ||\n ((contrast >= 128 || series.type === 'Hilo') ? 'black' : 'white'), series.textElement, false, redraw, true, false, series.chart.duration, series.clipRect, null, null, chart.enableCanvas);\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 rgbValue = convertHexToColor(colorNameToHex(this.fontBackground));\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.y = (dataLabel.position === 'Auto') ? location.y :\n this.calculateAlignment(alignmentValue, location.y, 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 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 + 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 - rect.height + extraSpace + margin.top) :\n (labelLocation + rect.height - extraSpace - margin.bottom) :\n isMinus ? (labelLocation + 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')\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 '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 - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.left + this.markerHeight;\n }\n else {\n location = !this.inverted ? location + extraSpace + margin.top + this.markerHeight :\n location - 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.isInversed ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isInversed ? '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})();\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(), maximum.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(this.chart);\n axis.calculateAxisRange(size, this.chart);\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 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, chart.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 triggerLabelRender(chart, tempInterval, axis.format(new Date(tempInterval)), labelStyle, axis);\n }\n tempInterval = this.increaseDateTimeInterval(axis, tempInterval, axis.visibleRange.interval).getTime();\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","/* 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 { 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 this.selectionColor = chart.theme === 'Bootstrap4' ? '#FFFFFF' : '#ff4081';\n this.fillColor = chart.theme === 'Bootstrap4' ? '#495057' : '#737373';\n this.iconRectOverFill = chart.theme === 'Bootstrap4' ? '#5A6268' : this.iconRectOverFill;\n this.iconRectSelectionFill = chart.theme === 'Bootstrap4' ? '#5B6269' : this.iconRectSelectionFill;\n this.iconRect = chart.theme === 'Bootstrap4' ? new Rect(-5, -5, 26, 26) : new Rect(0, 0, 16, 16);\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.selectionColor : this.fillColor;\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 childElement.id = this.elementId + '_Zooming_Pan';\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.iconRect)));\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 var fillColor = this.chart.zoomModule.isPanning ? this.fillColor : this.selectionColor;\n var rectColor = this.chart.zoomModule.isPanning ? 'transparent' : this.iconRectSelectionFill;\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('aria-label', this.chart.getLocalizedLabel('Zoom'));\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.iconRect)));\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.fillColor;\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('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.iconRect)));\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.elementOpacity = chart.zoomModule.isPanning ? '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.fillColor;\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('aria-label', this.chart.getLocalizedLabel('ZoomOut'));\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_ZoomOut_1', 'transparent', {}, 1, this.iconRect)));\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.elementOpacity = chart.zoomModule.isPanning ? '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.fillColor;\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('aria-label', this.chart.getLocalizedLabel('Reset'));\n if (!isDevice) {\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Reset_1', 'transparent', {}, 1, this.iconRect)));\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' });\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' }, 'black', childElement, null, null, null, null, null, null, null, null, chart.enableCanvas);\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' }).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 (rect) {\n this.hoveredID = rect.id;\n rect.setAttribute('fill', this.iconRectOverFill);\n }\n if (icon2) {\n icon2.setAttribute('fill', this.selectionColor);\n }\n if (icon3) {\n icon3.setAttribute('fill', this.selectionColor);\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 (getElement(this.hoveredID)) {\n var rectColor = this.chart.zoomModule.isPanning ? (this.hoveredID.indexOf('_Pan_') > -1) ? this.iconRectSelectionFill : 'transparent' : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.iconRectSelectionFill : '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.selectionColor : this.fillColor : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.selectionColor : this.fillColor;\n icon2.setAttribute('fill', iconColor);\n }\n if (icon3) {\n var iconColor = this.chart.zoomModule.isPanning ? this.fillColor : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.selectionColor : this.fillColor;\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 () {\n var _this = this;\n var chart = this.chart;\n if (!chart.zoomModule.isDevice) {\n remove(chart.zoomModule.toolkitElements);\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 }\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 if (chart.enableAutoIntervalOnBothAxis) {\n chart.processData(false);\n }\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.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.zoomOutElements.setAttribute('opacity', this.elementOpacity);\n this.applySelection(this.zoomElements.childNodes, this.selectionColor);\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.iconRectSelectionFill);\n return false;\n };\n /** @private */\n Toolkit.prototype.pan = function () {\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.selectionColor) : 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.iconRectSelectionFill);\n return false;\n };\n Toolkit.prototype.zoomInOutCalculation = function (scale, chart, axes, mode) {\n if (!chart.zoomModule.isPanning && this.elementOpacity !== '0.2') {\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 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' && mode !== 'X')) {\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 }\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 = 0.3;\n this.isIOS = Browser.isIos || Browser.isIos7;\n this.isZoomed = this.performedUI = this.zooming.enablePan && this.zooming.enableSelectionZooming;\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 === 'X') {\n rect.height = areaBounds.height;\n rect.y = areaBounds.y;\n }\n else 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) {\n var _this = this;\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 = (chart.previousMouseMoveX - chart.mouseX) / axis.rect.width / currentScale;\n argsData.currentZoomPosition = minMax(axis.zoomPosition + offset, 0, (1 - axis.zoomFactor));\n }\n else {\n offset = (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 _this.performDefferedZoom(chart);\n });\n }\n else {\n this.performDefferedZoom(chart);\n this.redrawOnZooming(chart, false);\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 'X':\n translateY = 0;\n break;\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' && mode !== 'X') {\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 if (mode !== 'X') {\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 }\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 _this.zoomingRect = new Rect(0, 0, 0, 0);\n _this.performZoomRedraw(chart);\n });\n }\n else {\n this.zoomingRect = new Rect(0, 0, 0, 0);\n this.redrawOnZooming(chart);\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' && mode !== 'X') ||\n (axis.orientation === 'Horizontal' && mode !== 'Y')) {\n cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * direction), 1);\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.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 () { _this.performZoomRedraw(chart); });\n }\n else {\n this.redrawOnZooming(chart);\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 this.setTransform(translateXValue, translateYValue, scaleX, scaleY, chart, true);\n break;\n case 'X':\n this.setTransform(translateXValue, 0, scaleX, 1, chart, true);\n break;\n case 'Y':\n this.setTransform(0, translateYValue, 1, scaleY, chart, true);\n break;\n }\n }\n this.calculatePinchZoomFactor(chart, pinchRect);\n this.refreshAxis(chart.chartAxisLayoutPanel, chart, chart.axisCollections);\n this.redrawOnZooming(chart, false);\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' && mode !== 'X')) {\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;\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 && this.chart.isBlazor) {\n this.chart.trigger(onZooming, onZoomingEventArgs);\n }\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 = 5;\n var render = chart.svgRenderer;\n var length = this.isDevice ? 1 : toolboxItems.length;\n var iconSize = this.isDevice ? measureText('Reset Zoom', { size: '12px' }).width : 16;\n var height = this.isDevice ? measureText('Reset Zoom', { size: '12px' }).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 this.toolkitElements.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Rect', '#fafafa', { color: 'transparent', width: 1 }, 1, new Rect(0, 0, width, (height + (spacing * 2))), 0, 0)));\n var outerElement = render.drawRectangle(new RectOption(this.elementId + '_Zooming_Rect', '#fafafa', { color: 'transparent', width: 1 }, 0.1, new Rect(0, 0, width, (height + (spacing * 2))), 0, 0));\n outerElement.setAttribute('filter', 'url(#chart_shadow)');\n this.toolkitElements.appendChild(outerElement);\n var currentItem;\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 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.setAttribute('style', '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.setAttribute('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) {\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 {\n this.toolkit.removeTooltip();\n this.isPanning = false;\n this.isZoomed = false;\n chart.svgObject.setAttribute('cursor', 'auto');\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 = 0.3;\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 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();\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 { RectOption, CircleOption } from '../utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\n// eslint-disable-next-line jsdoc/require-param\n/**\n * Create scrollbar svg.\n *\n * @returns {void}\n */\nexport function createScrollSvg(scrollbar, renderer) {\n var rect = scrollbar.axis.rect;\n var isHorizontalAxis = scrollbar.axis.orientation === 'Horizontal';\n var enablePadding = false;\n var markerHeight = 5;\n var yMin;\n for (var _i = 0, _a = scrollbar.axis.series; _i < _a.length; _i++) {\n var tempSeries = _a[_i];\n if (tempSeries.marker.height > markerHeight) {\n markerHeight = tempSeries.marker.height;\n }\n }\n for (var _b = 0, _c = scrollbar.axis.series; _b < _c.length; _b++) {\n var tempSeries = _c[_b];\n if (tempSeries.visible) { // To avoid the console error, when the visibility of the series is false.\n yMin = tempSeries.yMin.toString();\n enablePadding = (tempSeries.yData).some(function (yData) {\n return yData === yMin;\n });\n }\n if (enablePadding) {\n break;\n }\n }\n scrollbar.svgObject = renderer.createSvg({\n id: scrollbar.component.element.id + '_' + 'scrollBar_svg' + scrollbar.axis.name,\n width: scrollbar.isVertical ? scrollbar.height : scrollbar.width,\n height: scrollbar.isVertical ? scrollbar.width : scrollbar.height,\n style: 'position: absolute;top: ' + ((scrollbar.axis.opposedPosition && isHorizontalAxis ? -16 :\n (enablePadding ? markerHeight : 0)) + rect.y) + 'px;left: ' +\n (((scrollbar.axis.opposedPosition && !isHorizontalAxis ? 16 : 0) + rect.x) - (scrollbar.isVertical ? scrollbar.height : 0))\n + 'px;cursor:auto;'\n });\n scrollbar.elements.push(scrollbar.svgObject);\n}\n/**\n * Scrollbar elements renderer\n */\nvar ScrollElements = /** @class */ (function () {\n /**\n * Constructor for scroll elements\n *\n * @param scrollObj\n * @param chart\n */\n function ScrollElements(chart) {\n this.chartId = chart.element.id + '_';\n }\n /**\n * Render scrollbar elements.\n *\n * @returns {void}\n * @private\n */\n ScrollElements.prototype.renderElements = function (scroll, renderer) {\n var scrollGroup = renderer.createGroup({\n id: this.chartId + 'scrollBar_' + scroll.axis.name,\n transform: 'translate(' + ((scroll.isVertical && scroll.axis.isInversed) ? scroll.height : scroll.axis.isInversed ?\n scroll.width : '0') + ',' + (scroll.isVertical && scroll.axis.isInversed ? '0' : scroll.axis.isInversed ?\n scroll.height : scroll.isVertical ? scroll.width : '0') + ') rotate(' + (scroll.isVertical && scroll.axis.isInversed ?\n '90' : scroll.isVertical ? '270' : scroll.axis.isInversed ? '180' : '0') + ')'\n });\n var backRectGroup = renderer.createGroup({\n id: this.chartId + 'scrollBar_backRect_' + scroll.axis.name\n });\n var thumbGroup = renderer.createGroup({\n id: this.chartId + 'scrollBar_thumb_' + scroll.axis.name,\n transform: 'translate(0,0)'\n });\n this.backRect(scroll, renderer, backRectGroup);\n this.thumb(scroll, renderer, thumbGroup);\n this.renderCircle(scroll, renderer, thumbGroup);\n this.arrows(scroll, renderer, thumbGroup);\n this.thumbGrip(scroll, renderer, thumbGroup);\n scrollGroup.appendChild(backRectGroup);\n scrollGroup.appendChild(thumbGroup);\n return scrollGroup;\n };\n /**\n * Method to render back rectangle of scrollbar\n *\n * @param scroll\n * @param renderer\n * @param parent\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.backRect = function (scroll, renderer, parent) {\n var style = scroll.scrollbarThemeStyle;\n var backRectEle = renderer.drawRectangle(new RectOption(this.chartId + 'scrollBarBackRect_' + scroll.axis.name, style.backRect, { width: 1, color: style.backRect }, 1, new Rect(0, 0, scroll.width, scroll.height), 0, 0));\n parent.appendChild(backRectEle);\n };\n /**\n * Method to render arrows\n *\n * @param scroll\n * @param renderer\n * @param parent\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.arrows = function (scroll, renderer, parent) {\n var style = scroll.scrollbarThemeStyle;\n var option = new PathOption(this.chartId + 'scrollBar_leftArrow_' + scroll.axis.name, style.arrow, 1, style.arrow, 1, '', '');\n this.leftArrowEle = renderer.drawPath(option);\n option.id = this.chartId + 'scrollBar_rightArrow_' + scroll.axis.name;\n this.rightArrowEle = renderer.drawPath(option);\n this.setArrowDirection(this.thumbRectX, this.thumbRectWidth, scroll.height);\n parent.appendChild(this.leftArrowEle);\n parent.appendChild(this.rightArrowEle);\n };\n /**\n * Methods to set the arrow width\n *\n * @param thumbRectX\n * @param thumbRectWidth\n * @param height\n */\n ScrollElements.prototype.setArrowDirection = function (thumbRectX, thumbRectWidth, height) {\n var circleRadius = 8;\n var leftDirection = 'M ' + ((thumbRectX - circleRadius / 2) + 1) + ' ' + (height / 2) + ' ' + 'L ' +\n (thumbRectX - circleRadius / 2 + 6) + ' ' + 11 + ' ' + 'L ' + (thumbRectX - circleRadius / 2 + 6) + ' ' + 5 + ' Z';\n var rightDirection = 'M ' + ((thumbRectX + thumbRectWidth + circleRadius / 2) - 0.5) + ' ' + (height / 2)\n + ' ' + 'L ' + (thumbRectX + thumbRectWidth + circleRadius / 2 - 6) + ' ' + 11.5 + ' ' + 'L ' + (thumbRectX +\n thumbRectWidth + circleRadius / 2 - 6) + ' ' + 4.5 + ' Z';\n this.leftArrowEle.setAttribute('d', leftDirection);\n this.rightArrowEle.setAttribute('d', rightDirection);\n };\n /**\n * Method to render thumb\n *\n * @param scroll\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.thumb = function (scroll, renderer, parent) {\n scroll.startX = this.thumbRectX;\n var style = scroll.scrollbarThemeStyle;\n this.slider = renderer.drawRectangle(new RectOption(this.chartId + 'scrollBarThumb_' + scroll.axis.name, style.thumb, { width: 1, color: '' }, 1, new Rect(this.thumbRectX, 0, this.thumbRectWidth, scroll.height)));\n parent.appendChild(this.slider);\n };\n /**\n * Method to render circles\n *\n * @param scroll\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.renderCircle = function (scroll, renderer, parent) {\n var style = scroll.scrollbarThemeStyle;\n var option = new CircleOption(this.chartId + 'scrollBar_leftCircle_' + scroll.axis.name, style.circle, { width: 1, color: style.circle }, 1, this.thumbRectX, scroll.height / 2, 8);\n var scrollShadowEle = '' +\n '' +\n '' +\n '' +\n '';\n var defElement = renderer.createDefs();\n var shadowGroup = renderer.createGroup({\n id: this.chartId + scroll.axis.name + '_thumb_shadow'\n });\n defElement.innerHTML = scrollShadowEle;\n shadowGroup.innerHTML = '';\n this.leftCircleEle = renderer.drawCircle(option);\n option.id = this.chartId + 'scrollBar_rightCircle_' + scroll.axis.name;\n option.cx = this.thumbRectX + this.thumbRectWidth;\n this.rightCircleEle = renderer.drawCircle(option);\n parent.appendChild(defElement);\n parent.appendChild(this.leftCircleEle);\n parent.appendChild(this.rightCircleEle);\n parent.appendChild(shadowGroup);\n };\n /**\n * Method to render grip elements\n *\n * @param scroll\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.thumbGrip = function (scroll, renderer, parent) {\n var sidePadding = 0;\n var topPadding = 0;\n var gripWidth = 14;\n var gripCircleDiameter = 2;\n var padding = gripWidth / 2 - gripCircleDiameter;\n var style = scroll.scrollbarThemeStyle;\n var option = new CircleOption(this.chartId + 'scrollBar_gripCircle0' + '_' + scroll.axis.name, style.grip, { width: 1, color: style.grip }, 1, 0, 0, 1);\n this.gripCircle = renderer.createGroup({\n id: this.chartId + 'scrollBar_gripCircle_' + scroll.axis.name,\n transform: 'translate(' + ((this.thumbRectX + this.thumbRectWidth / 2) + ((scroll.isVertical ? 1 : -1) * padding)) +\n ',' + (scroll.isVertical ? '10' : '5') + ') rotate(' + (scroll.isVertical ? '180' : '0') + ')'\n });\n for (var i = 1; i <= 6; i++) {\n option.id = this.chartId + 'scrollBar_gripCircle' + i + '_' + scroll.axis.name;\n option.cx = sidePadding;\n option.cy = topPadding;\n this.gripCircle.appendChild(renderer.drawCircle(option));\n sidePadding = i === 3 ? 0 : (sidePadding + 5);\n topPadding = i >= 3 ? 5 : 0;\n }\n parent.appendChild(this.gripCircle);\n };\n return ScrollElements;\n}());\nexport { ScrollElements };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { ScrollElements, createScrollSvg } from './scrollbar-elements';\nimport { getElement, minMax, logBase } from '../utils/helper';\nimport { getScrollbarThemeColor } from '../model/theme';\nimport { scrollChanged, scrollEnd, scrollStart } from '../model/constants';\n/**\n * Scrollbar Base\n */\nvar ScrollBar = /** @class */ (function () {\n /**\n * Constructor for creating scrollbar\n *\n * @param component\n * @param axis\n */\n function ScrollBar(component, axis) {\n /** @private */\n this.scrollRange = { max: null, min: null, interval: null, delta: null };\n this.component = component;\n this.elements = [];\n this.scrollElements = new ScrollElements(component);\n this.axis = axis;\n this.mouseMoveListener = this.scrollMouseMove.bind(this);\n this.mouseUpListener = this.scrollMouseUp.bind(this);\n this.animateDuration = 500;\n this.isPointer = Browser.isPointer;\n this.browserName = Browser.info.name;\n }\n /**\n * To Mouse x and y position\n *\n * @param e\n */\n ScrollBar.prototype.getMouseXY = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (e.type.indexOf('touch') > -1) {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageX = e.clientX;\n pageY = e.clientY;\n }\n var svgRect = getElement(this.component.element.id + '_scrollBar_svg' + this.axis.name).getBoundingClientRect();\n this.mouseX = pageX - Math.max(svgRect.left, 0);\n this.mouseY = pageY - Math.max(svgRect.top, 0);\n };\n /**\n * Method to bind events for scrollbar svg object\n *\n * @param element\n * @returns {void}\n */\n ScrollBar.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.scrollMouseDown, this);\n EventHandler.add(element, Browser.touchMoveEvent, this.scrollMouseMove, this);\n EventHandler.add(element, Browser.touchEndEvent, this.scrollMouseUp, this);\n EventHandler.add(element, 'mousewheel', this.scrollMouseWheel, this);\n window.addEventListener('mousemove', this.mouseMoveListener, false);\n window.addEventListener('mouseup', this.mouseUpListener, false);\n };\n /**\n * Method to remove events for srcollbar svg object\n *\n * @param element\n */\n ScrollBar.prototype.unWireEvents = function (element) {\n EventHandler.remove(element, Browser.touchStartEvent, this.scrollMouseDown);\n EventHandler.remove(element, Browser.touchMoveEvent, this.scrollMouseMove);\n EventHandler.remove(element, Browser.touchEndEvent, this.scrollMouseUp);\n EventHandler.remove(element, 'mousewheel', this.scrollMouseWheel);\n window.removeEventListener('mousemove', this.mouseMoveListener, false);\n window.removeEventListener('mouseup', this.mouseUpListener, false);\n };\n /**\n * Handles the mouse down on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseDown = function (e) {\n var id = e.target.id;\n var elem = this.scrollElements;\n this.getMouseXY(e);\n this.isResizeLeft = this.isExist(id, '_leftCircle_') || this.isExist(id, '_leftArrow_');\n this.isResizeRight = this.isExist(id, '_rightCircle_') || this.isExist(id, '_rightArrow_');\n // this.previousXY = this.isVertical ? this.mouseY : this.mouseX;\n this.previousXY = (this.isVertical && this.axis.isInversed) ? this.mouseY : this.isVertical ? this.width -\n this.mouseY : this.axis.isInversed ? this.width - this.mouseX : this.mouseX;\n this.previousWidth = elem.thumbRectWidth;\n this.previousRectX = elem.thumbRectX;\n this.startZoomPosition = this.axis.zoomPosition;\n this.startZoomFactor = this.axis.zoomFactor;\n this.startRange = this.axis.visibleRange;\n this.scrollStarted = true;\n this.component.trigger(scrollStart, this.getArgs(scrollStart));\n if (this.isExist(id, 'scrollBarThumb_') || this.isExist(id, 'gripCircle')) {\n this.isThumbDrag = true;\n this.svgObject.style.cursor = '-webkit-grabbing';\n }\n else if (this.isExist(id, 'scrollBarBackRect_')) {\n var currentX = this.moveLength(this.previousXY, this.previousRectX);\n elem.thumbRectX = this.isWithIn(currentX) ? currentX : elem.thumbRectX;\n this.positionThumb(elem.thumbRectX, elem.thumbRectWidth);\n this.setZoomFactorPosition(elem.thumbRectX, elem.thumbRectWidth, false);\n if (this.isLazyLoad) {\n var thumbMove = elem.thumbRectX > this.previousRectX ? 'RightMove' : 'LeftMove';\n var args = this.calculateLazyRange(elem.thumbRectX, elem.thumbRectWidth, thumbMove);\n if (args) {\n this.component.trigger(scrollEnd, args);\n }\n }\n }\n /**\n * Customer issue\n * Task ID - EJ2-28898\n * Issue: While element's height is smaller than chart'height, html scroll bar presents. On that case while moving chart scrollbar,\n * html scrollbar goes up due to chart's svg removed from the dom when zoomFactor and zoomPosition chnaged\n * Fix: Only for scrolling purpose, height for element is set to chart's available height\n */\n if (this.component.element.style.height === '') {\n this.isCustomHeight = true;\n this.component.element.style.height = this.component.availableSize.height + 'px';\n }\n };\n /**\n * To check the matched string\n *\n * @param id\n * @param match\n */\n ScrollBar.prototype.isExist = function (id, match) {\n return id.indexOf(match) > -1;\n };\n /**\n * To check current poisition is within scrollbar region\n *\n * @param currentX\n */\n ScrollBar.prototype.isWithIn = function (currentX) {\n var circleRadius = 8;\n return (currentX - circleRadius >= 0 &&\n currentX + this.scrollElements.thumbRectWidth + circleRadius <= this.width);\n };\n /**\n * Method to find move length of thumb\n *\n * @param mouseXY\n * @param thumbX\n * @param circleRadius\n */\n ScrollBar.prototype.moveLength = function (mouseXY, thumbX, circleRadius) {\n if (circleRadius === void 0) { circleRadius = 8; }\n var moveLength = (10 / 100) * (this.width - circleRadius * 2);\n if (mouseXY < thumbX) {\n moveLength = thumbX - (thumbX - moveLength > circleRadius ? moveLength : circleRadius);\n }\n else {\n moveLength = thumbX + (thumbX + this.scrollElements.thumbRectWidth + moveLength < this.width - circleRadius ?\n moveLength : circleRadius);\n }\n return moveLength;\n };\n /**\n * Method to calculate zoom factor and position\n *\n * @param currentX\n * @param currentWidth\n */\n ScrollBar.prototype.setZoomFactorPosition = function (currentX, currentWidth, isRequire) {\n if (isRequire === void 0) { isRequire = true; }\n this.isScrollUI = true;\n var axis = this.axis;\n var circleRadius = 8;\n var circleWidth = 1;\n var currentScrollWidth = currentX + currentWidth + circleRadius + circleWidth;\n var currentZPWidth = circleRadius + (circleWidth / 2);\n this.zoomPosition = (currentX - (currentX - currentZPWidth <= 0 ? currentZPWidth : 0)) / (this.isVertical\n ? axis.rect.height : this.width);\n this.zoomFactor = (currentWidth + (currentScrollWidth >= this.width ? circleRadius + circleWidth : 0)) / (this.isVertical\n ? axis.rect.height : this.width);\n axis.zoomPosition = this.zoomPosition < 0 ? 0 : this.zoomPosition > 0.9 ? 1 : this.zoomPosition;\n axis.zoomFactor = isRequire ? this.zoomFactor : axis.zoomFactor;\n };\n /**\n * Handles the mouse move on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseMove = function (e) {\n var target = e.target;\n var elem = this.scrollElements;\n this.getMouseXY(e);\n this.setCursor(target);\n this.setTheme(target);\n //let mouseXY: number = this.isVertical ? this.mouseY : this.mouseX;\n var mouseXY = (this.isVertical && this.axis.isInversed) ? this.width - this.mouseY : this.isVertical ?\n this.mouseY : this.mouseX;\n var range = this.axis.visibleRange;\n var zoomPosition = this.zoomPosition;\n var zoomFactor = this.zoomFactor;\n var moveLength = this.previousRectX - elem.thumbRectX;\n var thumbMove = moveLength < 0 ? 'RightMove' : 'LeftMove';\n var args;\n if (this.isLazyLoad && (this.isThumbDrag || this.isResizeLeft || this.isResizeRight)) {\n args = this.calculateLazyRange(elem.thumbRectX, elem.thumbRectWidth, thumbMove);\n }\n var currentRange = args ? args.currentRange : null;\n if (this.isThumbDrag) {\n this.component.isScrolling = this.isThumbDrag;\n mouseXY = (this.isVertical || this.axis.isInversed) ? this.width - mouseXY : mouseXY;\n var currentX = elem.thumbRectX + (mouseXY - this.previousXY);\n if (mouseXY >= currentX + elem.thumbRectWidth) {\n this.setCursor(target);\n }\n else {\n this.svgObject.style.cursor = '-webkit-grabbing';\n }\n if (mouseXY >= 0 && mouseXY <= currentX + elem.thumbRectWidth) {\n elem.thumbRectX = this.isWithIn(currentX) ? currentX : elem.thumbRectX;\n this.positionThumb(elem.thumbRectX, elem.thumbRectWidth);\n this.previousXY = mouseXY;\n this.setZoomFactorPosition(currentX, elem.thumbRectWidth, false);\n }\n this.component.trigger(scrollChanged, this.getArgs(scrollChanged, range, zoomPosition, zoomFactor, currentRange));\n }\n else if (this.isResizeLeft || this.isResizeRight) {\n this.resizeThumb();\n this.component.trigger(scrollChanged, this.getArgs(scrollChanged, range, zoomPosition, zoomFactor, currentRange));\n }\n };\n /**\n * Handles the mouse wheel on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseWheel = function (e) {\n var svgRect = getElement(this.component.element.id + '_scrollBar_svg' + this.axis.name).getBoundingClientRect();\n this.mouseX = e.clientX - Math.max(svgRect.left, 0);\n this.mouseY = e.clientY - Math.max(svgRect.top, 0);\n var origin = 0.5;\n var elem = this.scrollElements;\n var axis = this.axis;\n var direction = (this.browserName === 'mozilla' && !this.isPointer) ?\n -(e.detail) / 3 > 0 ? 1 : -1 : (e['wheelDelta'] / 120) > 0 ? 1 : -1;\n var cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * direction), 1);\n var range = this.axis.visibleRange;\n var zoomPosition = this.zoomPosition;\n var zoomFactor = this.zoomFactor;\n var args;\n if (cumulative >= 1) {\n origin = axis.orientation === 'Horizontal' ? this.mouseX / axis.rect.width : 1 - (this.mouseY / axis.rect.height);\n origin = origin > 1 ? 1 : origin < 0 ? 0 : origin;\n this.zoomFactor = (cumulative === 1) ? 1 : minMax(1 / cumulative, 0, 1);\n this.zoomPosition = (cumulative === 1) ? 0 : axis.zoomPosition + ((axis.zoomFactor - this.zoomFactor) * origin);\n }\n elem.thumbRectX = this.isWithIn(this.zoomPosition * this.width) ? this.zoomPosition * this.width : elem.thumbRectX;\n this.isScrollUI = true;\n this.positionThumb(elem.thumbRectX, elem.thumbRectWidth);\n if (this.isLazyLoad) {\n this.setZoomFactorPosition(elem.thumbRectX, elem.thumbRectWidth);\n }\n axis.zoomFactor = this.zoomFactor;\n axis.zoomPosition = this.zoomPosition;\n if (this.isLazyLoad) {\n args = this.calculateMouseWheelRange(elem.thumbRectX, elem.thumbRectWidth);\n if (args) {\n if ((args.currentRange.minimum !== args.previousAxisRange.minimum) && (args.currentRange.maximum !==\n args.previousAxisRange.maximum)) {\n this.component.trigger(scrollEnd, args);\n this.isScrollEnd = false;\n }\n }\n }\n if (!this.isLazyLoad) {\n this.component.trigger(scrollChanged, this.getArgs(scrollChanged, range, zoomPosition, zoomFactor));\n }\n };\n /**\n * Handles the mouse up on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseUp = function () {\n var args;\n this.startX = this.scrollElements.thumbRectX;\n var circleRadius = 8;\n var circleWidth = 1;\n var currentScrollWidth = this.startX + this.scrollElements.thumbRectWidth + circleRadius + circleWidth;\n var currentZPWidth = circleRadius + (circleWidth / 2);\n if ((this.isResizeLeft || this.isResizeRight) && !this.isLazyLoad) {\n this.axis.zoomFactor = (currentScrollWidth >= this.width - 1 && (this.startX - currentZPWidth) <= 0) ? 1 : this.zoomFactor;\n }\n if (this.isLazyLoad) {\n var moveLength = this.previousRectX - this.startX;\n if ((moveLength > 0 || moveLength < 0) && this.isThumbDrag) {\n var thumbMove = moveLength < 0 ? 'RightMove' : 'LeftMove';\n if (thumbMove === 'RightMove') {\n this.startX = (this.startX + Math.abs(moveLength)) < this.width - circleRadius ? this.startX :\n this.width - circleRadius - this.scrollElements.thumbRectWidth;\n }\n else {\n this.startX = (this.startX + this.scrollElements.thumbRectWidth - Math.abs(moveLength)) > circleRadius ?\n this.startX : circleRadius;\n }\n args = this.calculateLazyRange(this.startX, this.scrollElements.thumbRectWidth, thumbMove);\n if (args) {\n this.component.trigger(scrollEnd, args);\n this.scrollStarted = false;\n }\n }\n if (this.isResizeLeft || this.isResizeRight) {\n args = this.calculateLazyRange(this.startX, this.scrollElements.thumbRectWidth);\n if (args) {\n this.component.trigger(scrollEnd, args);\n this.scrollStarted = false;\n }\n }\n }\n this.isThumbDrag = false;\n this.isResizeLeft = false;\n this.isResizeRight = false;\n this.isScrollEnd = false;\n this.component.isScrolling = false;\n if (this.scrollStarted && !this.isLazyLoad) {\n this.component.trigger(scrollEnd, this.getArgs(scrollChanged, this.startRange, this.startZoomPosition, this.startZoomFactor));\n this.scrollStarted = false;\n }\n /**\n * Customer issue\n * Task ID - EJ2-28898\n * Chart's height setted is removed here.\n */\n if (this.isCustomHeight) {\n this.component.element.style.height = null;\n }\n };\n ScrollBar.prototype.calculateMouseWheelRange = function (scrollThumbX, scrollThumbWidth) {\n var zoomFactor;\n var zoomPosition;\n var args;\n var range = this.scrollRange;\n var previousRange = this.getStartEnd(this.previousStart, this.previousEnd, false);\n var circleRadius = 8;\n if ((scrollThumbX + scrollThumbWidth + circleRadius) <= this.width) {\n zoomPosition = (scrollThumbX - circleRadius) / this.width;\n zoomFactor = scrollThumbWidth / (this.width);\n }\n var currentStart = range.min + zoomPosition * range.delta;\n var currentEnd = currentStart + zoomFactor * range.delta;\n if (currentEnd) {\n args = { axis: this.axis, currentRange: this.getStartEnd(currentStart, currentEnd, true), previousAxisRange: previousRange };\n }\n return args;\n };\n /**\n * Range calculation for lazy loading\n *\n * @param scrollThumbX\n * @param scrollThumbWidth\n * @param thumbMove\n * @param scrollThumbX\n * @param scrollThumbWidth\n * @param thumbMove\n * @param scrollThumbX\n * @param scrollThumbWidth\n * @param thumbMove\n */\n ScrollBar.prototype.calculateLazyRange = function (scrollThumbX, scrollThumbWidth, thumbMove) {\n var currentScrollWidth = scrollThumbWidth;\n var zoomFactor;\n var zoomPosition;\n var currentStart;\n var currentEnd;\n var args;\n var range = this.scrollRange;\n var previousRange = this.getStartEnd(this.previousStart, this.previousEnd, false);\n var circleRadius = 8;\n var circleWidth = 16;\n if (this.isResizeRight || thumbMove === 'RightMove') {\n currentScrollWidth = this.isResizeRight ? currentScrollWidth + circleWidth : currentScrollWidth;\n zoomFactor = (currentScrollWidth + circleRadius) / this.width;\n zoomPosition = thumbMove === 'RightMove' ? (scrollThumbX + circleRadius) / this.width : this.axis.zoomPosition;\n currentStart = thumbMove === 'RightMove' ? (range.min + zoomPosition * range.delta) : this.previousStart;\n currentEnd = currentStart + zoomFactor * range.delta;\n }\n else if (this.isResizeLeft || thumbMove === 'LeftMove') {\n zoomPosition = (scrollThumbX - circleRadius) / this.width;\n zoomFactor = currentScrollWidth / this.width;\n currentStart = range.min + zoomPosition * range.delta;\n currentStart = currentStart >= range.min ? currentStart : range.min;\n currentEnd = thumbMove === 'LeftMove' ? (currentStart + zoomFactor * range.delta) : this.previousEnd;\n }\n else if (this.isThumbDrag) {\n zoomPosition = thumbMove === 'RightMove' ? (scrollThumbX + circleRadius) / this.width : (scrollThumbX - circleRadius) / this.width;\n zoomFactor = (this.scrollElements.thumbRectWidth) / this.width;\n currentStart = range.min + zoomPosition * range.delta;\n currentStart = currentStart >= range.min ? currentStart : range.min;\n currentEnd = currentStart + zoomFactor * range.delta;\n }\n if (currentEnd) {\n args = { axis: (this.component.isBlazor ? {} : this.axis), currentRange: this.getStartEnd(currentStart, currentEnd, true),\n previousAxisRange: previousRange };\n }\n return args;\n };\n /**\n * Get start and end values\n *\n * @param start\n * @param end\n * @param isCurrentStartEnd\n * @param start\n * @param end\n * @param isCurrentStartEnd\n * @param start\n * @param end\n * @param isCurrentStartEnd\n */\n ScrollBar.prototype.getStartEnd = function (start, end, isCurrentStartEnd) {\n var valueType = this.valueType;\n if ((valueType === 'DateTime' || valueType === 'DateTimeCategory') && isCurrentStartEnd) {\n this.previousStart = start;\n this.previousEnd = end;\n }\n else if (isCurrentStartEnd) {\n this.previousStart = Math.round(start);\n this.previousEnd = Math.ceil(end);\n }\n switch (valueType) {\n case 'Double':\n case 'Category':\n case 'Logarithmic':\n start = Math.round(start);\n end = Math.ceil(end);\n break;\n case 'DateTime':\n case 'DateTimeCategory':\n start = new Date(start);\n end = new Date(end);\n break;\n }\n return { minimum: start, maximum: end };\n };\n /**\n * To render scroll bar\n *\n * @param isScrollExist\n * @private\n */\n ScrollBar.prototype.render = function (isScrollExist) {\n if (this.component.zoomModule || (isScrollExist && this.axis.scrollbarSettings.enable)) {\n this.getDefaults();\n }\n this.getTheme();\n this.removeScrollSvg();\n createScrollSvg(this, this.component.svgRenderer);\n this.wireEvents(this.svgObject);\n this.svgObject.appendChild(this.scrollElements.renderElements(this, this.component.svgRenderer));\n return this.svgObject;\n };\n /**\n * Theming for scrollabr\n *\n * @returns {void}\n */\n ScrollBar.prototype.getTheme = function () {\n this.scrollbarThemeStyle = getScrollbarThemeColor(this.component.theme);\n };\n /**\n * Method to remove existing scrollbar\n *\n * @returns {void}\n */\n ScrollBar.prototype.removeScrollSvg = function () {\n if (document.getElementById(this.component.element.id + '_scrollBar_svg' + this.axis.name)) {\n remove(document.getElementById(this.component.element.id + '_scrollBar_svg' + this.axis.name));\n }\n };\n /**\n * Method to set cursor fpr scrollbar\n *\n * @param target\n */\n ScrollBar.prototype.setCursor = function (target) {\n var id = target.id;\n this.svgObject.style.cursor = id.indexOf('scrollBarThumb_') > -1 || id.indexOf('_gripCircle') > -1 ?\n '-webkit-grab' : (id.indexOf('Circle_') > -1 || id.indexOf('Arrow_') > -1) ? this.isVertical ? 'ns-resize' :\n 'ew-resize' : 'auto';\n };\n /**\n * Method to set theme for sollbar\n *\n * @param target\n */\n ScrollBar.prototype.setTheme = function (target) {\n var id = target.id;\n var isLeftHover = id.indexOf('_leftCircle_') > -1 || id.indexOf('_leftArrow_') > -1;\n var isRightHover = id.indexOf('_rightCircle_') > -1 || id.indexOf('_rightArrow_') > -1;\n var style = this.scrollbarThemeStyle;\n var leftArrowEle = this.scrollElements.leftArrowEle;\n var rightArrowEle = this.scrollElements.rightArrowEle;\n var leftCircleEle = this.scrollElements.leftCircleEle;\n var rightCircleEle = this.scrollElements.rightCircleEle;\n var isAxis = this.isCurrentAxis(target, leftArrowEle);\n leftCircleEle.style.fill = isLeftHover && isAxis ? style.circleHover : style.circle;\n rightCircleEle.style.fill = isRightHover && isAxis ? style.circleHover : style.circle;\n leftCircleEle.style.stroke = isLeftHover && isAxis ? style.circleHover : style.circle;\n rightCircleEle.style.stroke = isRightHover && isAxis ? style.circleHover : style.circle;\n if (this.component.theme === 'HighContrastLight') {\n leftArrowEle.style.fill = isLeftHover && isAxis ? style.arrowHover : style.arrow;\n leftArrowEle.style.stroke = isLeftHover && isAxis ? style.arrowHover : style.arrow;\n rightArrowEle.style.fill = isRightHover && isAxis ? style.arrowHover : style.arrow;\n rightArrowEle.style.stroke = isRightHover && isAxis ? style.arrowHover : style.arrow;\n leftCircleEle.style.stroke = isLeftHover && isAxis ? style.circleHover : style.circle;\n rightCircleEle.style.stroke = isRightHover && isAxis ? style.circleHover : style.circle;\n }\n };\n /**\n * To check current axis\n *\n * @param target\n * @param ele\n */\n ScrollBar.prototype.isCurrentAxis = function (target, ele) {\n return (target.id.split('_')[2] === ele.id.split('_')[2]);\n };\n /**\n * Method to resize thumb\n *\n * @param e\n */\n ScrollBar.prototype.resizeThumb = function () {\n var currentWidth;\n var circleRadius = 8;\n var padding = 5;\n var gripWidth = 14;\n var minThumbWidth = circleRadius * 2 + padding * 2 + gripWidth;\n var thumbX = this.previousRectX;\n // let mouseXY: number = this.isVertical ? this.mouseY : this.mouseX;\n var mouseXY = (this.isVertical && this.axis.isInversed) ? this.mouseY : this.isVertical ? this.width -\n this.mouseY : this.axis.isInversed ? this.width - this.mouseX : this.mouseX;\n var diff = Math.abs(this.previousXY - mouseXY);\n if (this.isResizeLeft && mouseXY >= 0) {\n var currentX = thumbX + (mouseXY > this.previousXY ? diff : -diff);\n currentWidth = currentX - circleRadius >= 0 ? this.previousWidth + (mouseXY > this.previousXY ? -diff : diff) :\n this.previousWidth;\n currentX = currentX - circleRadius >= 0 ? currentX : thumbX;\n if (currentWidth >= minThumbWidth && mouseXY < currentX + currentWidth) {\n this.scrollElements.thumbRectX = this.previousRectX = currentX;\n this.scrollElements.thumbRectWidth = this.previousWidth = currentWidth;\n this.previousXY = mouseXY;\n this.positionThumb(currentX, currentWidth);\n this.setZoomFactorPosition(currentX, currentWidth);\n }\n }\n else if (this.isResizeRight) {\n currentWidth = mouseXY >= minThumbWidth + this.scrollElements.thumbRectX && mouseXY <= this.width - circleRadius ?\n mouseXY - this.scrollElements.thumbRectX : this.previousWidth;\n this.scrollElements.thumbRectWidth = this.previousWidth = currentWidth;\n this.previousXY = mouseXY;\n this.positionThumb(this.startX, currentWidth);\n this.setZoomFactorPosition(this.startX, currentWidth);\n if (!this.isLazyLoad) {\n this.setZoomFactorPosition(this.startX, currentWidth);\n }\n }\n };\n /**\n * Method to position the scrollbar thumb\n *\n * @param currentX\n * @param currentWidth\n */\n ScrollBar.prototype.positionThumb = function (currentX, currentWidth) {\n var elem = this.scrollElements;\n var gripWidth = 14;\n var gripCircleDiameter = 2;\n var padding = gripWidth / 2 - gripCircleDiameter;\n elem.slider.setAttribute('x', currentX.toString());\n elem.slider.setAttribute('width', currentWidth.toString());\n elem.leftCircleEle.setAttribute('cx', currentX.toString());\n elem.rightCircleEle.setAttribute('cx', (currentX + currentWidth).toString());\n elem.setArrowDirection(currentX, currentWidth, this.height);\n elem.gripCircle.setAttribute('transform', 'translate(' + (currentX + currentWidth / 2 + ((this.isVertical ? 1 : -1) * padding)) +\n ',' + (this.isVertical ? '10' : '5') + ') rotate(' + (this.isVertical ? '180' : '0') + ')');\n };\n /**\n * Method to get default values\n *\n * @returns {void}\n */\n ScrollBar.prototype.getDefaults = function () {\n var axis = this.axis;\n var circleRadius = 8;\n var padding = 5;\n var gripWidth = 14;\n var minThumbWidth = circleRadius * 2 + padding * 2 + gripWidth;\n if (this.axis.scrollbarSettings.enable) {\n this.isLazyLoad = true;\n this.getLazyDefaults(axis);\n }\n this.isVertical = axis.orientation === 'Vertical';\n this.zoomFactor = this.isLazyLoad ? this.zoomFactor : axis.zoomFactor;\n this.zoomPosition = this.isLazyLoad ? this.zoomPosition : axis.zoomPosition;\n var currentWidth = this.zoomFactor * (this.isVertical ? axis.rect.height : axis.rect.width);\n currentWidth = currentWidth > minThumbWidth ? currentWidth : minThumbWidth;\n this.scrollX = axis.rect.x;\n this.scrollY = axis.rect.y;\n this.width = this.isVertical ? axis.rect.height : axis.rect.width;\n this.height = 16;\n var currentX = this.zoomPosition * (this.isVertical ? axis.rect.height : this.width);\n var minThumbX = (this.width - minThumbWidth - circleRadius);\n this.scrollElements.thumbRectX = currentX > minThumbX ? minThumbX : currentX < circleRadius ? circleRadius : currentX;\n this.scrollElements.thumbRectWidth = ((currentWidth + this.scrollElements.thumbRectX) < this.width - (circleRadius * 2))\n ? currentWidth : this.width - this.scrollElements.thumbRectX - circleRadius;\n };\n /**\n * Lazy load default values\n *\n * @param axis\n */\n ScrollBar.prototype.getLazyDefaults = function (axis) {\n var start;\n var end;\n var valueType = axis.valueType;\n var scrollbarSettings = axis.scrollbarSettings;\n var range = axis.scrollbarSettings.range;\n var visibleRange = axis.visibleRange;\n var pointsLength = axis.scrollbarSettings.pointsLength;\n this.valueType = valueType = (!scrollbarSettings.range.minimum || !scrollbarSettings.range.maximum) &&\n scrollbarSettings.pointsLength ? 'Double' : valueType;\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.component.intl.getDateParser(option);\n var dateFormatter = this.component.intl.getDateFormat(option);\n switch (valueType) {\n case 'Double':\n case 'Category':\n case 'Logarithmic':\n start = range.minimum ? range.minimum : pointsLength ? 0 : visibleRange.min;\n end = range.maximum ? range.maximum : pointsLength ? (pointsLength - 1) : visibleRange.max;\n break;\n case 'DateTime':\n case 'DateTimeCategory':\n start = range.minimum ? Date.parse(dateParser(dateFormatter(range.minimum))) : visibleRange.min;\n end = range.maximum ? Date.parse(dateParser(dateFormatter(range.maximum))) : visibleRange.max;\n break;\n }\n start = Math.min(start, visibleRange.min);\n end = Math.max(end, visibleRange.max);\n var zoomFactor = (visibleRange.max - visibleRange.min) / (end - start);\n var zoomPosition = (visibleRange.min - start) / (end - start);\n this.zoomFactor = range.minimum || range.maximum ? zoomFactor : (this.axis.maxPointLength / axis.scrollbarSettings.pointsLength);\n this.zoomPosition = range.minimum || range.maximum ? zoomPosition : axis.zoomPosition;\n this.scrollRange.min = start;\n this.scrollRange.max = end;\n this.scrollRange.delta = end - start;\n this.previousStart = visibleRange.min;\n this.previousEnd = visibleRange.max;\n };\n /**\n * Method to get log range\n *\n * @param axis\n */\n ScrollBar.prototype.getLogRange = function (axis) {\n var range = axis.scrollbarSettings.range;\n var start = logBase(range.minimum, axis.logBase);\n var end = logBase(range.maximum, axis.logBase);\n start = isFinite(start) ? start : range.minimum;\n end = isFinite(start) ? end : range.maximum;\n return { minimum: Math.floor(start / 1), maximum: Math.ceil(end / 1) };\n };\n /**\n * Method for injecting scrollbar module\n *\n * @param axis\n * @param component\n */\n ScrollBar.prototype.injectTo = function (axis, component) {\n axis.zoomingScrollBar = new ScrollBar(component, axis);\n };\n /**\n * Method to destroy scrollbar\n *\n * @returns {void}\n */\n ScrollBar.prototype.destroy = function () {\n var _this = this;\n if (this.axes) {\n this.axes.map(function (axis) {\n axis.zoomingScrollBar.destroy();\n });\n }\n else {\n this.elements.map(function (element) {\n _this.unWireEvents(element);\n remove(element.firstChild);\n });\n this.elements = [];\n }\n };\n /**\n * Method to get scrollbar module name\n *\n * @returns {string}\n */\n ScrollBar.prototype.getModuleName = function () {\n return 'ScrollBar';\n };\n ScrollBar.prototype.getArgs = function (eventName, range, zoomPosition, zoomFactor, currentRanges) {\n var scrollArgs = {\n axis: (this.component.isBlazor ? {} : this.axis),\n name: eventName,\n range: this.axis.visibleRange,\n zoomFactor: this.axis.zoomFactor,\n zoomPosition: this.axis.zoomPosition,\n previousRange: range,\n previousZoomFactor: zoomFactor,\n previousZoomPosition: zoomPosition,\n currentRange: currentRanges\n };\n return scrollArgs;\n };\n return ScrollBar;\n}());\nexport { ScrollBar };\n","/* eslint-disable no-trailing-spaces */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-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, 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].x > 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) || tempPoint.x === '') {\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,\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 /**\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 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,\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","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/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\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","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/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * AccumulationChart base file\n */\nimport { Property, ChildProperty, Complex, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Border, Font, Animation, EmptyPointSettings, Connector } from '../../common/model/base';\nimport { Rect, PathOption } from '@syncfusion/ej2-svg-base';\nimport { stringToNumber, appendChildElement } from '../../common/utils/helper';\nimport { seriesRender, pointRender } from '../../common/model/constants';\nimport { getSeriesColor } from '../../common/model/theme';\nimport { getElement, firstToLowerCase } from '../../common/utils/helper';\n/**\n * Annotation for accumulation series\n */\nvar AccumulationAnnotationSettings = /** @class */ (function (_super) {\n __extends(AccumulationAnnotationSettings, _super);\n function AccumulationAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property('Pixel')\n ], AccumulationAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], AccumulationAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], AccumulationAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property('Center')\n ], AccumulationAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"description\", void 0);\n return AccumulationAnnotationSettings;\n}(ChildProperty));\nexport { AccumulationAnnotationSettings };\n/**\n * Configures the dataLabel in accumulation chart.\n */\nvar AccumulationDataLabelSettings = /** @class */ (function (_super) {\n __extends(AccumulationDataLabelSettings, _super);\n function AccumulationDataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], AccumulationDataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], AccumulationDataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('Inside')\n ], AccumulationDataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property(0)\n ], AccumulationDataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], AccumulationDataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], AccumulationDataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Complex({}, Connector)\n ], AccumulationDataLabelSettings.prototype, \"connectorStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"template\", void 0);\n return AccumulationDataLabelSettings;\n}(ChildProperty));\nexport { AccumulationDataLabelSettings };\n/**\n * Center value of the Pie series.\n */\nvar PieCenter = /** @class */ (function (_super) {\n __extends(PieCenter, _super);\n function PieCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"x\", void 0);\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"y\", void 0);\n return PieCenter;\n}(ChildProperty));\nexport { PieCenter };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar AccPoints = /** @class */ (function () {\n function AccPoints() {\n /** accumulation point visibility */\n this.visible = true;\n /** accumulation point symbol location */\n this.symbolLocation = null;\n /** @private */\n this.region = null;\n /** @private */\n this.labelRegion = null;\n /** @private */\n this.labelVisible = true;\n this.regions = null;\n /** @private */\n this.isExplode = false;\n /** @private */\n this.isClubbed = false;\n /** @private */\n this.isSliced = false;\n /** @private */\n this.argsData = null;\n /** @private */\n this.isLabelUpdated = null;\n /** @private */\n this.initialLabelRegion = null;\n }\n return AccPoints;\n}());\nexport { AccPoints };\n/**\n * Configures the series in accumulation chart.\n */\nvar AccumulationSeries = /** @class */ (function (_super) {\n __extends(AccumulationSeries, _super);\n function AccumulationSeries() {\n /**\n * Specifies the dataSource for the series. It can be an array of JSON objects or an instance of DataManager.\n * ```html\n *
\n * ```\n * ```typescript\n * let dataManager: DataManager = new DataManager({\n * url: 'http://mvc.syncfusion.com/Services/Northwnd.svc/Tasks/'\n * });\n * let query: Query = new Query().take(50).where('Estimate', 'greaterThan', 0, false);\n * let pie: AccumulationChart = new AccumulationChart({\n * ...\n * series: [{\n * dataSource: dataManager,\n * xName: 'Id',\n * yName: 'Estimate',\n * query: query\n * }],\n * ...\n * });\n * pie.appendTo('#Pie');\n * ```\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.points = [];\n /** @private */\n _this.clubbedPoints = [];\n /** @private */\n _this.sumOfPoints = 0;\n /** @private */\n _this.isRectSeries = true;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.rightSidePoints = [];\n /** @private */\n _this.leftSidePoints = [];\n return _this;\n }\n /**\n * To refresh the Datamanager for series\n *\n * @private\n */\n AccumulationSeries.prototype.refreshDataManager = function (accumulation, render) {\n var _this = this;\n var dateSource = this.dataSource || accumulation.dataSource;\n if (!(dateSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dateSource, count: dateSource.length }, accumulation, render);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, accumulation); });\n };\n /**\n * To get points on dataManager is success\n *\n * @private\n */\n AccumulationSeries.prototype.dataManagerSuccess = function (e, accumulation, render) {\n if (render === void 0) { render = true; }\n var argsData = {\n name: seriesRender, series: this, data: e.result\n };\n accumulation.allowServerDataBinding = false;\n accumulation.trigger(seriesRender, argsData);\n this.resultData = e.result !== '' ? e.result : [];\n if (!accumulation.isBlazor && !render) {\n this.getPoints(this.resultData, accumulation); // To update datasource using onPropertyChanged method. incident id: 290690\n }\n /* eslint-disable */\n if ((++accumulation.seriesCounts === accumulation.visibleSeries.length && render)\n // tslint:disable-next-line:no-string-literal\n || (window['Blazor'] && !render && accumulation.seriesCounts === 1)) {\n this.getPoints(this.resultData, accumulation);\n accumulation.refreshChart();\n }\n };\n /** @private To find points from result data */\n AccumulationSeries.prototype.getPoints = function (result, accumulation) {\n var length = Object.keys(result).length;\n this.sumOfPoints = 0;\n if (length === 0) {\n return null;\n }\n this.findSumOfPoints(result);\n this.points = [];\n this.clubbedPoints = [];\n this.sumOfClub = 0;\n var point;\n var colors = this.palettes.length ? this.palettes : getSeriesColor(accumulation.theme);\n var clubValue = stringToNumber(this.groupTo, this.sumOfPoints);\n for (var i = 0; i < length; i++) {\n point = this.setPoints(result, i, colors, accumulation);\n var currentY = point.y;\n if (!this.isClub(point, clubValue, i)) {\n if (isNullOrUndefined(point.y)) {\n point.visible = false;\n }\n this.pushPoints(point, colors);\n }\n else {\n point.index = this.clubbedPoints.length;\n point.isExplode = true;\n this.clubbedPoints.push(point);\n point.isSliced = true;\n }\n }\n this.lastGroupTo = this.groupTo;\n if (this.sumOfClub > 0) {\n var clubPoint_1 = this.generateClubPoint();\n this.pushPoints(clubPoint_1, colors);\n var pointsLength_1 = this.points.length - 1;\n this.clubbedPoints.map(function (point) {\n point.index += pointsLength_1;\n point.color = clubPoint_1.color;\n });\n }\n if (this.clubbedPoints.length && this.explode && this.type === 'Pie'\n && (this.explodeAll || this.points[this.points.length - 1].index === this.explodeIndex)) {\n this.points.splice(this.points.length - 1, 1);\n this.points = this.points.concat(this.clubbedPoints);\n }\n };\n AccumulationSeries.prototype.generateClubPoint = function () {\n var clubPoint = new AccPoints();\n clubPoint.isClubbed = true;\n clubPoint.x = 'Others';\n clubPoint.y = this.sumOfClub;\n clubPoint.text = clubPoint.originalText = clubPoint.x + ': ' + this.sumOfClub;\n clubPoint.sliceRadius = '80%';\n return clubPoint;\n };\n /**\n * Method to set point index and color\n */\n AccumulationSeries.prototype.pushPoints = function (point, colors) {\n point.index = this.points.length;\n point.isExplode = this.explodeAll || (point.index === this.explodeIndex);\n point.color = point.color || colors[point.index % colors.length];\n this.points.push(point);\n };\n /**\n * Method to find club point\n */\n AccumulationSeries.prototype.isClub = function (point, clubValue, index) {\n if (!isNullOrUndefined(clubValue)) {\n if (this.groupMode === 'Value' && Math.abs(point.y) <= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n else if (this.groupMode === 'Point' && index >= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n }\n return false;\n };\n /**\n * Method to find sum of points in the series\n */\n AccumulationSeries.prototype.findSumOfPoints = function (result) {\n var length = Object.keys(result).length;\n for (var i = 0; i < length; i++) {\n if (!isNullOrUndefined(result[i]) && !isNullOrUndefined(result[i][this.yName]) && !isNaN(result[i][this.yName])) {\n this.sumOfPoints += Math.abs(result[i][this.yName]);\n }\n }\n };\n /**\n * Method to set points x, y and text from data source\n */\n AccumulationSeries.prototype.setPoints = function (data, i, colors, accumulation) {\n var point = new AccPoints();\n point.x = getValue(this.xName, data[i]);\n point.y = getValue(this.yName, data[i]);\n point.percentage = (+(point.y / this.sumOfPoints * 100).toFixed(2));\n point.legendImageUrl = getValue(this.legendImageUrl, data[i]);\n point.color = getValue(this.pointColorMapping, data[i]);\n point.text = point.originalText = getValue(this.dataLabel.name || '', data[i]);\n point.tooltip = getValue(this.tooltipMappingName || '', data[i]);\n point.sliceRadius = getValue(this.radius, data[i]);\n point.sliceRadius = isNullOrUndefined(point.sliceRadius) ? '80%' : point.sliceRadius;\n point.separatorY = accumulation.intl.formatNumber(point.y, { useGrouping: accumulation.useGroupingSeparator });\n this.setAccEmptyPoint(point, i, data, colors);\n return point;\n };\n /**\n * Method render the series elements for accumulation chart\n * @private\n */\n AccumulationSeries.prototype.renderSeries = function (accumulation, redraw) {\n var seriesGroup = redraw ? getElement(accumulation.element.id + '_Series_' + this.index) :\n accumulation.renderer.createGroup({ id: accumulation.element.id + '_Series_' + this.index });\n this.renderPoints(accumulation, seriesGroup, redraw);\n var datalabelGroup;\n if (accumulation.accumulationDataLabelModule && this.dataLabel.visible) {\n datalabelGroup = accumulation.renderer.createGroup({ id: accumulation.element.id + '_datalabel_Series_' + this.index });\n datalabelGroup.style.visibility =\n (this.animation.enable && accumulation.animateSeries && this.type === 'Pie') ? 'hidden' : 'visible';\n this.renderDataLabel(accumulation, datalabelGroup, redraw);\n }\n if (this.type === 'Pie') {\n this.findMaxBounds(this.labelBound, this.accumulationBound);\n accumulation.pieSeriesModule.animateSeries(accumulation, this.animation, this, seriesGroup);\n }\n if (accumulation.accumulationLegendModule) {\n this.labelBound.x -= accumulation.explodeDistance;\n this.labelBound.y -= accumulation.explodeDistance;\n this.labelBound.height += (accumulation.explodeDistance - this.labelBound.y);\n this.labelBound.width += (accumulation.explodeDistance - this.labelBound.x);\n }\n };\n /**\n * Method render the points elements for accumulation chart series.\n */\n AccumulationSeries.prototype.renderPoints = function (accumulation, seriesGroup, redraw) {\n var pointId = accumulation.element.id + '_Series_' + this.index + '_Point_';\n var option;\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n var argsData = {\n cancel: false, name: pointRender, series: this, point: point, fill: point.color,\n border: this.isEmpty(point) ? { width: this.emptyPointSettings.border.width, color: this.emptyPointSettings.border.color } :\n { width: this.border.width, color: this.border.color }\n };\n accumulation.trigger(pointRender, argsData);\n point.color = argsData.fill;\n option = new PathOption(pointId + point.index, point.color, argsData.border.width || 1, argsData.border.color || point.color, this.opacity, '', '');\n accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].\n renderPoint(point, this, accumulation, option, seriesGroup, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), seriesGroup, redraw);\n };\n /**\n * Method render the datalabel elements for accumulation chart.\n */\n AccumulationSeries.prototype.renderDataLabel = function (accumulation, datalabelGroup, redraw) {\n accumulation.accumulationDataLabelModule.findAreaRect();\n var element = createElement('div', {\n id: accumulation.element.id + '_Series_0' + '_DataLabelCollections'\n });\n this.leftSidePoints = [], this.rightSidePoints = [];\n var firstQuarter = [];\n var secondQuarter = [];\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.visible) {\n if (this.dataLabel.showZero || (!this.dataLabel.showZero && ((point.y !== 0) || (point.y === 0 &&\n this.emptyPointSettings.mode === 'Zero')))) {\n accumulation.accumulationDataLabelModule.renderDataLabel(point, this.dataLabel, datalabelGroup, this.points, this.index, element, redraw);\n }\n }\n if (point.midAngle >= 90 && point.midAngle <= 270) {\n this.leftSidePoints.push(point);\n }\n else {\n if (point.midAngle >= 0 && point.midAngle <= 90) {\n secondQuarter.push(point);\n }\n else {\n firstQuarter.push(point);\n }\n }\n }\n firstQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n secondQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.leftSidePoints.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.rightSidePoints = firstQuarter.concat(secondQuarter);\n accumulation.accumulationDataLabelModule.drawDataLabels(this, this.dataLabel, datalabelGroup, element, redraw);\n if (this.dataLabel.template !== null && element.childElementCount) {\n var dataLabelCallBack = accumulation.accumulationDataLabelModule.drawDataLabels.bind(accumulation.accumulationDataLabelModule, this, this.dataLabel, datalabelGroup, element, redraw);\n // tslint:disable-next-line:no-any\n if (accumulation.isReact) {\n accumulation.renderReactTemplates(dataLabelCallBack);\n }\n appendChildElement(false, getElement(accumulation.element.id + '_Secondary_Element'), element, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), datalabelGroup, redraw);\n };\n /**\n * To find maximum bounds for smart legend placing\n *\n * @private\n */\n AccumulationSeries.prototype.findMaxBounds = function (totalbound, bound) {\n totalbound.x = bound.x < totalbound.x ? bound.x : totalbound.x;\n totalbound.y = bound.y < totalbound.y ? bound.y : totalbound.y;\n totalbound.height = (bound.y + bound.height) > totalbound.height ? (bound.y + bound.height) : totalbound.height;\n totalbound.width = (bound.x + bound.width) > totalbound.width ? (bound.x + bound.width) : totalbound.width;\n };\n /**\n * To set empty point value for null points\n * @private\n */\n AccumulationSeries.prototype.setAccEmptyPoint = function (point, i, data, colors) {\n if (!(isNullOrUndefined(point.y) || isNaN(point.y))) {\n return null;\n }\n point.color = this.emptyPointSettings.fill || point.color;\n switch (this.emptyPointSettings.mode) {\n case 'Zero':\n point.y = 0;\n point.visible = true;\n break;\n case 'Average':\n var previous = data[i - 1] ? (data[i - 1][this.yName] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][this.yName] || 0) : 0;\n point.y = (Math.abs(previous) + Math.abs(next)) / 2;\n this.sumOfPoints += point.y;\n point.visible = true;\n break;\n default:\n point.visible = false;\n break;\n }\n };\n /**\n * To find point is empty\n */\n AccumulationSeries.prototype.isEmpty = function (point) {\n return point.color === this.emptyPointSettings.fill;\n };\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], AccumulationSeries.prototype, \"query\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"yName\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"visible\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], AccumulationSeries.prototype, \"border\", void 0);\n __decorate([\n Complex(null, Animation)\n ], AccumulationSeries.prototype, \"animation\", void 0);\n __decorate([\n Property('SeriesType')\n ], AccumulationSeries.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"groupTo\", void 0);\n __decorate([\n Property('Value')\n ], AccumulationSeries.prototype, \"groupMode\", void 0);\n __decorate([\n Complex({}, AccumulationDataLabelSettings)\n ], AccumulationSeries.prototype, \"dataLabel\", void 0);\n __decorate([\n Property([])\n ], AccumulationSeries.prototype, \"palettes\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"startAngle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"endAngle\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"radius\", void 0);\n __decorate([\n Property('0')\n ], AccumulationSeries.prototype, \"innerRadius\", void 0);\n __decorate([\n Property('Pie')\n ], AccumulationSeries.prototype, \"type\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explode\", void 0);\n __decorate([\n Property('30%')\n ], AccumulationSeries.prototype, \"explodeOffset\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explodeAll\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"explodeIndex\", void 0);\n __decorate([\n Complex({ mode: 'Drop' }, EmptyPointSettings)\n ], AccumulationSeries.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"gapRatio\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"width\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"height\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckWidth\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckHeight\", void 0);\n __decorate([\n Property('Linear')\n ], AccumulationSeries.prototype, \"pyramidMode\", void 0);\n __decorate([\n Property(1)\n ], AccumulationSeries.prototype, \"opacity\", void 0);\n return AccumulationSeries;\n}(ChildProperty));\nexport { AccumulationSeries };\n/**\n * method to get series from index\n * @private\n */\nexport function getSeriesFromIndex(index, visibleSeries) {\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 visibleSeries[0];\n}\n/**\n * method to get point from index\n * @private\n */\nexport function pointByIndex(index, points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (point.index === index) {\n return point;\n }\n }\n return null;\n}\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/**\n * Defines the common functionalities of accumulation series\n */\nimport { isNullOrUndefined, Animation, createElement } from '@syncfusion/ej2-base';\nimport { degreeToLocation, getElement, indexFinder, linear } from '../../common/utils/helper';\nimport { pointByIndex } from '../model/acc-base';\n/**\n * Accumulation Base used to do some base calculation for accumulation chart.\n */\nvar AccumulationBase = /** @class */ (function () {\n /** @private */\n function AccumulationBase(accumulation) {\n this.accumulation = accumulation;\n }\n Object.defineProperty(AccumulationBase.prototype, \"center\", {\n /**\n * Gets the center of the pie\n *\n * @private\n */\n get: function () {\n return this.pieCenter || (this.accumulation.visibleSeries[0].type === 'Pie' ?\n this.accumulation.pieSeriesModule.center : null);\n },\n /**\n * Sets the center of the pie\n *\n * @private\n */\n set: function (value) {\n this.pieCenter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AccumulationBase.prototype, \"radius\", {\n /**\n * Gets the radius of the pie\n *\n * @private\n */\n get: function () {\n return this.pieRadius !== undefined ? this.pieRadius :\n this.accumulation.pieSeriesModule.radius;\n },\n /**\n * Sets the radius of the pie\n *\n * @private\n */\n set: function (value) {\n this.pieRadius = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AccumulationBase.prototype, \"labelRadius\", {\n /**\n * Gets the label radius of the pie\n *\n * @private\n */\n get: function () {\n return this.pieLabelRadius !== undefined ? this.pieLabelRadius :\n this.accumulation.pieSeriesModule.labelRadius;\n },\n /**\n * Sets the label radius of the pie\n *\n * @private\n */\n set: function (value) {\n this.pieLabelRadius = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Checks whether the series is circular or not\n *\n * @private\n */\n AccumulationBase.prototype.isCircular = function () {\n return this.accumulation.type === 'Pie';\n };\n /**\n * To check various radius pie\n *\n * @private\n */\n AccumulationBase.prototype.isVariousRadius = function () {\n return this.accumulation.pieSeriesModule.isRadiusMapped;\n };\n /**\n * To process the explode on accumulation chart loading\n *\n * @private\n */\n AccumulationBase.prototype.processExplode = function (event) {\n if (event.target.id.indexOf('_Series_') > -1 || event.target.id.indexOf('_datalabel_') > -1) {\n var pointIndex = indexFinder(event.target.id).point;\n if (isNaN(pointIndex) || (event.target.id.indexOf('_datalabel_') > -1 &&\n this.accumulation.visibleSeries[0].points[pointIndex].labelPosition === 'Outside')) {\n return null;\n }\n this.explodePoints(pointIndex, this.accumulation);\n this.deExplodeAll(pointIndex, this.accumulation.enableAnimation ? 300 : 0);\n }\n };\n /**\n * To invoke the explode on accumulation chart loading\n *\n * @private\n */\n AccumulationBase.prototype.invokeExplode = function () {\n var series = this.accumulation.visibleSeries[0];\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.isExplode) {\n this.pointExplode(point.index, point, duration);\n }\n }\n if (this.accumulation.accumulationSelectionModule && this.accumulation.selectionMode !== 'None' &&\n this.accumulation.accumulationSelectionModule.selectedDataIndexes.length) {\n for (var _b = 0, _c = this.accumulation.accumulationSelectionModule.selectedDataIndexes; _b < _c.length; _b++) {\n var index = _c[_b];\n this.explodePoints(index.point, this.accumulation, true);\n this.deExplodeAll(index.point, duration);\n }\n }\n };\n /**\n * To deExplode all points in the series\n *\n * @private\n */\n AccumulationBase.prototype.deExplodeAll = function (index, animationDuration) {\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var points = this.accumulation.visibleSeries[0].points;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var currentPoint = points_1[_i];\n if ((index !== currentPoint.index && !currentPoint.isSliced) || currentPoint.isClubbed) {\n currentPoint.isExplode = false;\n this.deExplodeSlice(currentPoint.index, pointId, animationDuration);\n }\n }\n };\n /**\n * To explode point by index\n *\n * @private\n */\n AccumulationBase.prototype.explodePoints = function (index, chart, explode) {\n if (explode === void 0) { explode = false; }\n var series = chart.visibleSeries[0];\n var points = series.points;\n var point = pointByIndex(index, points);\n var explodePoints = true;\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n if (isNullOrUndefined(point)) {\n return null;\n }\n var clubPointsExploded = !explode &&\n (point.isSliced || (series.clubbedPoints.length &&\n points[points.length - 1].index === series.clubbedPoints[series.clubbedPoints.length - 1].index));\n if (series.type === 'Pie' && (clubPointsExploded || point.isClubbed)) {\n explodePoints = this.clubPointExplode(index, point, series, points, chart, duration, clubPointsExploded);\n }\n if (explodePoints) {\n this.pointExplode(index, point, duration, explode);\n }\n };\n AccumulationBase.prototype.getSum = function (points) {\n var total = 0;\n points.map(function (point) {\n total += point.visible ? point.y : 0;\n });\n return total;\n };\n AccumulationBase.prototype.clubPointExplode = function (index, point, series, points, chart, duration, clubPointsExploded) {\n if (clubPointsExploded === void 0) { clubPointsExploded = false; }\n if (point.isClubbed) {\n chart.animateSeries = false;\n points.splice(points.length - 1, 1);\n series.clubbedPoints.map(function (point) {\n point.visible = true;\n point.isExplode = true;\n });\n chart.visibleSeries[0].points = points.concat(series.clubbedPoints);\n this.deExplodeAll(index, duration);\n series.sumOfPoints = this.getSum(chart.visibleSeries[0].points);\n chart.refreshChart();\n return false;\n }\n else if (clubPointsExploded || point.isSliced) {\n chart.animateSeries = false;\n points.splice(points.length - series.clubbedPoints.length, series.clubbedPoints.length);\n var clubPoint = series.generateClubPoint();\n clubPoint.index = points.length;\n clubPoint.color = series.clubbedPoints[0].color;\n points.push(clubPoint);\n series.sumOfPoints = this.getSum(points);\n this.deExplodeAll(index, duration);\n clubPoint.isExplode = false;\n chart.visibleSeries[0].points = points;\n chart.refreshChart();\n this.pointExplode(clubPoint.index, points[clubPoint.index], 0, true);\n clubPoint.isExplode = false;\n this.deExplodeSlice(clubPoint.index, chart.element.id + '_Series_0_Point_', duration);\n if (point.isSliced) {\n return false;\n }\n }\n return true;\n };\n /**\n * To Explode points\n *\n * @param {number} index Index of a point.\n * @param {AccPoints} point To get the point of explode.\n * @param {number} duration Duration of the explode point.\n * @param {boolean} explode Either true or false.\n */\n AccumulationBase.prototype.pointExplode = function (index, point, duration, explode) {\n var translate;\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var chart = this.accumulation;\n if (!this.isCircular()) {\n translate = {\n x: ((point.labelRegion && point.labelRegion.x < point.region.x) ? -chart.explodeDistance :\n chart.explodeDistance), y: 0\n };\n }\n else {\n translate = degreeToLocation(point.midAngle, chart.explodeDistance, this.center);\n }\n if (this.isExplode(pointId + index) || explode) {\n point.isExplode = true;\n this.explodeSlice(index, translate, pointId, this.center || { x: 0, y: 0 }, duration);\n }\n else {\n point.isExplode = false;\n this.deExplodeSlice(index, pointId, duration);\n }\n };\n /**\n * To check point is exploded by id\n */\n AccumulationBase.prototype.isExplode = function (id) {\n var element = getElement(id);\n var transform = element ? element.getAttribute('transform') : null;\n return (element && (transform === 'translate(0, 0)' || transform === null || transform === 'translate(0)'));\n };\n /**\n * To deExplode the point by index\n */\n AccumulationBase.prototype.deExplodeSlice = function (index, sliceId, animationDuration) {\n var element = getElement(sliceId + index);\n if (element) {\n var borderElement = element.parentNode.lastChild.hasAttribute('transform');\n if (borderElement) {\n element.parentNode.lastChild.removeAttribute('transform');\n }\n }\n var transform = element ? element.getAttribute('transform') : null;\n if (this.accumulation.enableAnimation && element && transform &&\n transform !== 'translate(0, 0)' && transform !== 'translate(0)') {\n var result = /translate\\((-?\\d+\\.?\\d*),?\\s*(-?\\d+[.]?\\d*)?\\)/.exec(transform);\n this.performAnimation(index, sliceId, 0, 0, +result[1], +result[2] || 0, animationDuration, true);\n }\n else {\n this.performAnimation(index, sliceId, 0, 0, 0, 0, animationDuration, true);\n }\n };\n /**\n * To translate the point elements by index and position\n */\n AccumulationBase.prototype.setTranslate = function (index, sliceId, position, transform) {\n this.setElementTransform(sliceId + index, position);\n if (this.accumulation.visibleSeries[0].dataLabel.visible) {\n sliceId = this.accumulation.element.id + '_datalabel_Series_0_';\n this.setElementTransform(sliceId + 'shape_' + index, position);\n this.setElementTransform(sliceId + 'text_' + index, position + transform);\n this.setElementTransform(sliceId + 'connector_' + index, position);\n }\n };\n /**\n * To translate the point element by id and position\n */\n AccumulationBase.prototype.setElementTransform = function (id, position) {\n var element = getElement(id);\n if (element) {\n element.setAttribute('transform', position);\n }\n };\n /**\n * To translate the point elements by index position\n */\n AccumulationBase.prototype.explodeSlice = function (index, translate, sliceId, center, animationDuration) {\n this.performAnimation(index, sliceId, 0, 0, translate.x - center.x, translate.y - center.y, animationDuration);\n };\n /**\n * To Perform animation point explode\n *\n * @param {number} index Index of the series.\n * @param {string} sliceId ID of the series.\n * @param {number} startX X value of start.\n * @param {number} startY Y value of start.\n * @param {number} endX X value of end.\n * @param {number} endY Y value of end.\n * @param {number} duration Duration of the animation.\n */\n AccumulationBase.prototype.performAnimation = function (index, sliceId, startX, startY, endX, endY, duration, isReverse) {\n var _this = this;\n var chart = this.accumulation;\n var values = sliceId.split('_');\n var seriesIndex = parseInt(sliceId.split('_')[values.length - 3], 10);\n var point = chart.visibleSeries[seriesIndex].points[index];\n if (duration <= 0) {\n this.setTranslate(index, sliceId, 'translate(' + (endX) + ', ' + (endY) + ')', point.transform);\n return null;\n }\n var xValue;\n var yValue;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n xValue = linear(args.timeStamp, startX, endX, args.duration);\n yValue = linear(args.timeStamp, startY, endY, args.duration);\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? endX - xValue : xValue) + ', ' + (isReverse ? endY - yValue : yValue) + ')', point.transform);\n },\n end: function () {\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? startX : endX) + ', ' + (isReverse ? startX : endY) + ')', point.transform);\n }\n });\n };\n return AccumulationBase;\n}());\nexport { AccumulationBase };\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 @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Accumulation charts base file\n */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { stringToNumber, ChartLocation, degreeToLocation, getAnimationFunction, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { animationComplete } from '../../common/model/constants';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * PieBase class used to do pie base calculations.\n */\nvar PieBase = /** @class */ (function (_super) {\n __extends(PieBase, _super);\n function PieBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To initialize the property values.\n *\n * @private\n */\n PieBase.prototype.initProperties = function (chart, series) {\n this.accumulation = chart;\n this.size = Math.min(chart.initialClipRect.width, chart.initialClipRect.height);\n this.initAngles(series);\n var r = parseInt(series.radius, 10);\n if ((series.radius.indexOf('%') !== -1 || typeof r === 'number') && !isNaN(r)) {\n this.isRadiusMapped = false;\n this.radius = stringToNumber(series.radius, this.size / 2);\n this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n }\n else {\n var radiusCollection = [];\n this.isRadiusMapped = true;\n for (var i = 0; i < Object.keys(series.points).length; i++) {\n if (series.points[i].sliceRadius.indexOf('%') !== -1) {\n radiusCollection[i] = stringToNumber(series.points[i].sliceRadius, this.size / 2);\n }\n else {\n radiusCollection[i] = parseInt(series.points[i].sliceRadius, 10);\n }\n }\n var minRadius = Math.min.apply(null, radiusCollection);\n var maxRadius = Math.max.apply(null, radiusCollection);\n this.radius = this.seriesRadius = maxRadius;\n this.innerRadius = stringToNumber(series.innerRadius, this.seriesRadius);\n this.innerRadius = this.innerRadius > minRadius ? (this.innerRadius / 2) : this.innerRadius;\n }\n // this.radius = stringToNumber(series.radius, size / 2);\n // this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n // this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n // (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', size / 2));\n chart.explodeDistance = series.explode ? stringToNumber(series.explodeOffset, this.radius) : 0;\n this.findCenter(chart, series);\n this.defaultLabelBound(series, series.dataLabel.visible, series.dataLabel.position);\n this.totalAngle -= 0.001;\n };\n /*\n * To get label radius of the pie.\n * @private\n */\n PieBase.prototype.getLabelRadius = function (series, point) {\n return series.dataLabel.position === 'Inside' ?\n ((((stringToNumber(point.sliceRadius, this.radius) - this.innerRadius)) / 2) + this.innerRadius) :\n (stringToNumber(point.sliceRadius, this.seriesRadius) + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n };\n /**\n * To find the center of the accumulation.\n *\n * @private\n */\n PieBase.prototype.findCenter = function (accumulation, series) {\n this.accumulation = accumulation;\n this.center = {\n x: stringToNumber(accumulation.center.x, accumulation.initialClipRect.width) + (accumulation.initialClipRect.x),\n y: stringToNumber(accumulation.center.y, accumulation.initialClipRect.height) + (accumulation.initialClipRect.y)\n };\n var accumulationRect = this.getSeriesBound(series);\n var accumulationRectCenter = new ChartLocation(accumulationRect.x + accumulationRect.width / 2, accumulationRect.y + accumulationRect.height / 2);\n this.center.x += (this.center.x - accumulationRectCenter.x);\n this.center.y += (this.center.y - accumulationRectCenter.y);\n this.accumulation.origin = this.center;\n };\n /**\n * To find angles from series.\n */\n PieBase.prototype.initAngles = function (series) {\n var endAngle = isNullOrUndefined(series.endAngle) ? series.startAngle : series.endAngle;\n this.totalAngle = (endAngle - series.startAngle) % 360;\n this.startAngle = series.startAngle - 90;\n this.totalAngle = this.totalAngle <= 0 ? (360 + this.totalAngle) : this.totalAngle;\n this.startAngle = (this.startAngle < 0 ? (this.startAngle + 360) : this.startAngle) % 360;\n };\n /**\n * To calculate data-label bound\n *\n * @private\n */\n PieBase.prototype.defaultLabelBound = function (series, visible, position) {\n var accumulationBound = this.getSeriesBound(series);\n series.accumulationBound = accumulationBound;\n series.labelBound = new Rect(accumulationBound.x, accumulationBound.y, accumulationBound.width + accumulationBound.x, accumulationBound.height + accumulationBound.y);\n if (visible && position === 'Outside') {\n series.labelBound = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n }\n };\n /**\n * To calculate series bound\n *\n * @private\n */\n PieBase.prototype.getSeriesBound = function (series) {\n var rect = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n this.initAngles(series);\n var start = this.startAngle;\n var total = this.totalAngle;\n var end = (this.startAngle + total) % 360;\n end = (end === 0) ? 360 : end;\n series.findMaxBounds(rect, this.getRectFromAngle(start));\n series.findMaxBounds(rect, this.getRectFromAngle(end));\n series.findMaxBounds(rect, new Rect(this.center.x, this.center.y, 0, 0));\n var nextQuandrant = (Math.floor(start / 90) * 90 + 90) % 360;\n var lastQuadrant = (Math.floor(end / 90) * 90) % 360;\n lastQuadrant = (lastQuadrant === 0) ? 360 : lastQuadrant;\n if (total >= 90 || lastQuadrant === nextQuandrant) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n series.findMaxBounds(rect, this.getRectFromAngle(lastQuadrant));\n }\n if (start === 0 || (start + total >= 360)) {\n series.findMaxBounds(rect, this.getRectFromAngle(0));\n }\n var length = nextQuandrant === lastQuadrant ? 0 : Math.floor(total / 90);\n for (var i = 1; i < length; i++) {\n nextQuandrant = nextQuandrant + 90;\n if ((nextQuandrant < lastQuadrant || end < start) || total === 360) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n }\n }\n rect.width -= rect.x;\n rect.height -= rect.y;\n return rect;\n };\n /**\n * To get rect location size from angle\n */\n PieBase.prototype.getRectFromAngle = function (angle) {\n var location = degreeToLocation(angle, this.radius, this.center);\n return new Rect(location.x, location.y, 0, 0);\n };\n /**\n * To get path arc direction\n */\n PieBase.prototype.getPathArc = function (center, start, end, radius, innerRadius) {\n var degree = end - start;\n degree = degree < 0 ? (degree + 360) : degree;\n var flag = (degree < 180) ? 0 : 1;\n if (!innerRadius && innerRadius === 0) {\n return this.getPiePath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, flag);\n }\n else {\n return this.getDoughnutPath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, degreeToLocation(start, innerRadius, center), degreeToLocation(end, innerRadius, center), innerRadius, flag);\n }\n };\n /**\n * To get pie direction\n */\n PieBase.prototype.getPiePath = function (center, start, end, radius, clockWise) {\n return 'M ' + center.x + ' ' + center.y + ' L ' + start.x + ' ' + start.y + ' A ' + radius + ' ' +\n radius + ' 0 ' + clockWise + ' 1 ' + end.x + ' ' + end.y + ' Z';\n };\n /**\n * To get doughnut direction\n */\n PieBase.prototype.getDoughnutPath = function (center, start, end, radius, innerStart, innerEnd, innerRadius, clockWise) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' + clockWise +\n ' 1 ' + end.x + ' ' + end.y + ' L ' + innerEnd.x + ' ' + innerEnd.y + ' A ' + innerRadius +\n ' ' + innerRadius + ' 0 ' + clockWise + ',0 ' + innerStart.x + ' ' + innerStart.y + ' Z';\n };\n /**\n * Method to start animation for pie series.\n */\n PieBase.prototype.doAnimation = function (slice, series) {\n var _this = this;\n var startAngle = series.startAngle - 90;\n var duration = this.accumulation.duration ? this.accumulation.duration : series.animation.duration;\n var value;\n this.center.x += 1;\n var radius = Math.max(this.accumulation.availableSize.height, this.accumulation.availableSize.width) * 0.75;\n radius += radius * (0.414); // formula r + r / 2 * (1.414 -1)\n // eslint-disable-next-line @typescript-eslint/ban-types\n var effect = getAnimationFunction('Linear'); // need to check animation type\n new Animation({}).animate(slice, {\n duration: duration,\n delay: series.animation.delay,\n progress: function (args) {\n value = effect(args.timeStamp, startAngle, _this.totalAngle, args.duration);\n slice.setAttribute('d', _this.getPathArc(_this.center, startAngle, value, radius, 0));\n },\n end: function () {\n _this.center.x -= 1;\n slice.setAttribute('d', _this.getPathArc(_this.center, 0, 359.99999, radius, 0));\n _this.accumulation.trigger(animationComplete, _this.accumulation.isBlazor ? {} :\n { series: series, accumulation: _this.accumulation, chart: _this.accumulation });\n var datalabelGroup = getElement(_this.accumulation.element.id + '_datalabel_Series_' + series.index);\n datalabelGroup.style.visibility = _this.accumulation.isDestroyed ? 'hidden' : 'visible';\n }\n });\n };\n return PieBase;\n}(AccumulationBase));\nexport { PieBase };\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 { PathOption } from '@syncfusion/ej2-svg-base';\nimport { degreeToLocation, getElement, linear, stringToNumber, indexFinder } from '../../common/utils/helper';\nimport { PieBase } from '../renderer/pie-base';\nimport { Animation, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * PieSeries module used to render `Pie` Series.\n */\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To get path option, degree, symbolLocation from the point.\n *\n * @private\n */\n PieSeries.prototype.renderPoint = function (point, series, chart, option, seriesGroup, redraw) {\n var sum = series.sumOfPoints;\n point.startAngle = this.startAngle;\n var yValue = point.visible ? point.y : 0;\n var degree = (sum) ? ((Math.abs(yValue) / sum) * (this.totalAngle)) : null;\n var start = Math.PI / 180 * ((90 - (360 - this.startAngle)) - 90);\n this.radius = this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius;\n option.d = this.getPathOption(point, degree, this.startAngle % 360);\n point.midAngle = (this.startAngle - (degree / 2)) % 360;\n point.endAngle = this.startAngle % 360;\n point.symbolLocation = degreeToLocation(point.midAngle, (this.radius + this.innerRadius) / 2, this.center);\n if (!redraw) {\n seriesGroup.appendChild(chart.renderer.drawPath(option));\n point.degree = degree;\n point.start = start;\n }\n else {\n seriesGroup.appendChild(chart.renderer.drawPath(option));\n this.refresh(point, degree, start, chart, option);\n }\n };\n PieSeries.prototype.findSeries = function (e) {\n var borderGap = 3; // Gap between pie/doughnut chart and border\n var width = 2; // width of the border\n var radius = this.innerRadius === 0 ? this.radius + borderGap : this.innerRadius - borderGap;\n var innerRadius = this.innerRadius === 0 ? radius + width : radius - width;\n this.toggleInnerPoint(e, radius, innerRadius);\n };\n PieSeries.prototype.toggleInnerPoint = function (event, radius, innerRadius) {\n var target = event.target;\n var id = indexFinder(target.id, true);\n var accumulationId = event.target.id.substring(0, (event.target.id.indexOf('Series') - 1));\n var borderElement = document.getElementById(this.accumulation.element.id + 'PointHover_Border');\n var createBorderEle;\n var seriesIndex = id.series;\n var pointIndex = id.point;\n var srcElem = getElement(accumulationId + '_Series_' + seriesIndex + '_Point_' + pointIndex);\n if (!isNaN(id.series) && srcElem) {\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var point = this.accumulation.visibleSeries[0].points[pointIndex];\n var opacity = srcElem.getAttribute('class') === accumulationId + '_ej2_deselected' ?\n this.accumulation.tooltip.enable ? 0.5 : 0.3 : this.accumulation.tooltip.enable ? 0.5 : 1;\n var innerPie = this.getPathArc(this.accumulation.pieSeriesModule.center, point.startAngle % 360, (point.startAngle + point.degree) % 360, radius, innerRadius);\n // while using annotation as a chart border will appear in both chart.so changed checked the id with target id\n if ((borderElement) && (accumulationId === this.accumulation.element.id) &&\n (borderElement.getAttribute('d') !== innerPie || point.isExplode)) {\n borderElement.parentNode.removeChild(borderElement);\n borderElement = null;\n }\n var seriousGroup = getElement(accumulationId + '_Series_' + seriesIndex);\n if (!borderElement && ((!point.isExplode) || (point.isExplode && event.type !== 'click'))) {\n var path = new PathOption(accumulationId + 'PointHover_Border', point.color, 1, point.color, opacity, '', innerPie);\n createBorderEle = this.accumulation.renderer.drawPath(path);\n createBorderEle.removeAttribute('transform');\n if (this.accumulation.selectionMode !== 'None' && event.target.hasAttribute('class')) {\n this.accumulation.accumulationSelectionModule.addSvgClass(createBorderEle, event.target.getAttribute('class'));\n }\n seriousGroup.appendChild(createBorderEle);\n if (point.isExplode && createBorderEle) {\n var borderExplode = srcElem.getAttribute('transform');\n createBorderEle.setAttribute('transform', borderExplode);\n }\n }\n }\n }\n else if (borderElement) {\n this.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n };\n PieSeries.prototype.removeBorder = function (borderElement, duration) {\n if (borderElement) {\n setTimeout(function () {\n if (borderElement.parentNode) {\n borderElement.parentNode.removeChild(borderElement);\n }\n }, duration);\n }\n };\n PieSeries.prototype.refresh = function (point, degree, start, chart, option) {\n var _this = this;\n var seriesElement = getElement(option.id);\n var duration = chart.duration ? chart.duration : 300;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: 0,\n progress: function (args) {\n var curentDegree = linear(args.timeStamp, point.degree, (degree - point.degree), args.duration);\n var currentStartAngle = linear(args.timeStamp, point.start, start - point.start, args.duration);\n currentStartAngle = ((currentStartAngle / (Math.PI / 180)) + 360) % 360;\n seriesElement.setAttribute('d', _this.getPathOption(point, curentDegree, currentStartAngle));\n if (point.isExplode) {\n chart.accBaseModule.explodePoints(point.index, chart, true);\n }\n seriesElement.style.visibility = 'visible';\n },\n end: function () {\n seriesElement.style.visibility = point.visible ? 'visible' : 'hidden';\n seriesElement.setAttribute('d', option.d);\n point.degree = degree;\n point.start = start;\n }\n });\n };\n /**\n * To get path option from the point.\n */\n PieSeries.prototype.getPathOption = function (point, degree, startAngle) {\n if (!degree) {\n return '';\n }\n var path = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius, this.innerRadius);\n //const path: string = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.radius, this.innerRadius);\n this.startAngle += degree;\n return path;\n };\n /**\n * To animate the pie series.\n *\n * @private\n */\n PieSeries.prototype.animateSeries = function (accumulation, option, series, slice) {\n var groupId = accumulation.element.id + 'SeriesGroup' + series.index;\n if (series.animation.enable && accumulation.animateSeries) {\n var clippath = accumulation.renderer.createClipPath({ id: groupId + '_clipPath' });\n var path = new PathOption(groupId + '_slice', 'transparent', 1, 'transparent', 1, '', '');\n var clipslice = accumulation.renderer.drawPath(path);\n clippath.appendChild(clipslice);\n accumulation.svgObject.appendChild(clippath);\n // I263828 pie chart animation issue fixed for safari browser\n slice.setAttribute('style', 'clip-path:url(#' + clippath.id + '); -webkit-clip-path:url(#' + clippath.id + ');');\n this.doAnimation(clipslice, series);\n }\n };\n /**\n * To get the module name of the Pie series.\n */\n PieSeries.prototype.getModuleName = function () {\n return 'PieSeries';\n };\n /**\n * To destroy the pie series.\n *\n * @returns {void}\n * @private\n */\n PieSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return PieSeries;\n}(PieBase));\nexport { PieSeries };\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/ban-types */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * AccumulationChart file\n */\nimport { Property, Component, Complex, Collection, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { Internationalization, Event, Browser, EventHandler, Touch } from '@syncfusion/ej2-base';\nimport { remove, extend, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Font, Margin, Border, TooltipSettings, Indexes } from '../common/model/base';\nimport { AccumulationSeries, PieCenter } from './model/acc-base';\nimport { Theme, getThemeColor } from '../common/model/theme';\nimport { load, pointClick } from '../common/model/constants';\nimport { pointMove, chartMouseClick, chartMouseDown } from '../common/model/constants';\nimport { chartMouseLeave, chartMouseMove, chartMouseUp, resized, beforeResize } from '../common/model/constants';\nimport { LegendSettings } from '../common/legend/legend';\nimport { subtractRect, indexFinder, appendChildElement, redrawElement, blazorTemplatesReset } from '../common/utils/helper';\nimport { RectOption, showTooltip, ImageOption } from '../common/utils/helper';\nimport { textElement, createSvg, calculateSize, removeElement, firstToLowerCase, withInBounds } from '../common/utils/helper';\nimport { getElement, titlePositionX } from '../common/utils/helper';\nimport { Rect, Size, measureText, TextOption } from '@syncfusion/ej2-svg-base';\nimport { Data } from '../common/model/data';\nimport { AccumulationBase } from './renderer/accumulation-base';\nimport { PieSeries } from './renderer/pie-series';\nimport { AccumulationAnnotationSettings } from './model/acc-base';\nimport { getTitle } from '../common/utils/helper';\nimport { ExportUtils } from '../common/utils/export';\n/**\n * Represents the AccumulationChart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar AccumulationChart = /** @class */ (function (_super) {\n __extends(AccumulationChart, _super);\n /**\n * Constructor for creating the AccumulationChart widget\n *\n * @private\n */\n function AccumulationChart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.animateselected = false;\n /** @private */\n _this.explodeDistance = 0;\n _this.chartid = 57724;\n return _this;\n }\n /**\n * Animate the series bounds on data change.\n *\n * @private\n */\n AccumulationChart.prototype.animate = function (duration) {\n this.duration = duration ? duration : 700;\n this.animateselected = true;\n this.animateSeries = false;\n var temIndex = 0;\n var tempcolor = [];\n var tempindex = [];\n var tempindex1 = [];\n var currentSeries = this.visibleSeries[0];\n var datasource = [];\n datasource = currentSeries.dataSource;\n currentSeries.sumOfPoints = 0;\n if (currentSeries.points.length < Object.keys(currentSeries.dataSource).length) {\n this.refresh();\n }\n else if (currentSeries.points.length > Object.keys(currentSeries.dataSource).length) {\n var currentSeries_1 = this.visibleSeries[0];\n currentSeries_1.points = currentSeries_1.points.filter(function (entry1) {\n entry1.visible = false;\n tempindex.push(entry1.index);\n tempcolor.push(entry1.color);\n return (datasource).some(function (entry2) {\n var accPoint = entry2;\n if (entry1.x === accPoint.x) {\n entry1.visible = true;\n tempindex1.push(entry1.index);\n entry1.index = temIndex;\n temIndex++;\n }\n return entry1.x === accPoint.x;\n });\n });\n var missing = tempindex.filter(function (item) { return tempindex1.indexOf(item) < 0; });\n var interval = tempindex.length - missing.length;\n for (var i = (tempindex.length - 1); i >= interval; i--) {\n removeElement('container_Series_0_Point_' + tempindex[i]);\n }\n for (var i = 0; i < currentSeries_1.points.length; i++) {\n currentSeries_1.points[i].y = currentSeries_1.dataSource[i].y;\n currentSeries_1.points[i].color = tempcolor[i];\n currentSeries_1.sumOfPoints += currentSeries_1.dataSource[i].y;\n }\n this.redraw = this.enableAnimation;\n this.animateSeries = false;\n this.calculateBounds();\n this.renderElements();\n }\n else {\n for (var i = 0; i < currentSeries.points.length; i++) {\n currentSeries.points[i].y = currentSeries.dataSource[i][currentSeries.yName];\n currentSeries.points[i].color = currentSeries.dataSource[i][currentSeries.pointColorMapping] != null\n ? currentSeries.dataSource[i][currentSeries.pointColorMapping] : currentSeries.points[i].color;\n currentSeries.sumOfPoints += currentSeries.dataSource[i][currentSeries.yName];\n }\n this.redraw = this.enableAnimation;\n this.animateSeries = false;\n this.removeSvg();\n this.refreshPoints(currentSeries.points);\n this.renderElements();\n }\n };\n Object.defineProperty(AccumulationChart.prototype, \"type\", {\n /** @private */\n get: function () {\n if (this.series && this.series.length) {\n return this.series[0].type;\n }\n return 'Pie';\n },\n enumerable: true,\n configurable: true\n });\n // accumulation chart methods\n /**\n * To create svg object, renderer and binding events for the container.\n */\n AccumulationChart.prototype.preRender = function () {\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.unWireEvents();\n this.setCulture();\n this.animateSeries = true;\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-accumulationchart').length;\n this.element.id = 'acc_chart_' + this.chartid + '_' + collection;\n }\n calculateSize(this);\n this.wireEvents();\n };\n /**\n * Themeing for chart goes here\n */\n AccumulationChart.prototype.setTheme = function () {\n /*! Set theme for accumulation chart */\n this.themeStyle = getThemeColor(this.theme);\n };\n /**\n * To render the accumulation chart elements\n */\n AccumulationChart.prototype.render = function () {\n var _this = this;\n if (this.element.className.indexOf('e-accumulationchart') === -1) {\n this.element.classList.add('e-accumulationchart');\n }\n var loadEventData = {\n chart: this.isBlazor ? {} : this,\n accumulation: this.isBlazor ? {} : this,\n theme: this.theme, name: load, cancel: false\n };\n this.trigger(load, loadEventData, function () {\n _this.theme = _this.isBlazor ? loadEventData.theme : _this.theme;\n _this.setTheme();\n _this.accBaseModule = new AccumulationBase(_this);\n _this.pieSeriesModule = new PieSeries(_this);\n _this.calculateVisibleSeries();\n _this.processData();\n _this.renderComplete();\n _this.allowServerDataBinding = true;\n });\n };\n /**\n * Method to unbind events for accumulation chart\n */\n AccumulationChart.prototype.unWireEvents = function () {\n /*! Find the Events type */\n var isIE11Pointer = Browser.isPointer;\n var start = Browser.touchStartEvent;\n var move = Browser.touchMoveEvent;\n var stop = Browser.touchEndEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, move, this.accumulationMouseMove);\n EventHandler.remove(this.element, stop, this.accumulationMouseEnd);\n EventHandler.remove(this.element, start, this.accumulationMouseStart);\n EventHandler.remove(this.element, 'click', this.accumulationOnMouseClick);\n EventHandler.remove(this.element, 'contextmenu', this.accumulationRightClick);\n EventHandler.remove(this.element, cancel, this.accumulationMouseLeave);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.accumulationResize);\n };\n /**\n * Method to bind events for the accumulation chart\n */\n AccumulationChart.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 isIE11Pointer = Browser.isPointer;\n var start = Browser.touchStartEvent;\n var stop = Browser.touchEndEvent;\n var move = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, move, this.accumulationMouseMove, this);\n EventHandler.add(this.element, stop, this.accumulationMouseEnd, this);\n EventHandler.add(this.element, start, this.accumulationMouseStart, this);\n EventHandler.add(this.element, 'click', this.accumulationOnMouseClick, this);\n EventHandler.add(this.element, 'contextmenu', this.accumulationRightClick, this);\n EventHandler.add(this.element, cancel, this.accumulationMouseLeave, this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.accumulationResize.bind(this));\n new Touch(this.element); // To avoid geasture blocking for browser\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n /**\n * Method to set mouse x, y from events\n */\n AccumulationChart.prototype.setMouseXY = function (e) {\n var pageX;\n var pageY;\n var svgRectElement = getElement(this.element.id + '_svg');\n if (svgRectElement && this.element) {\n var svgRect = svgRectElement.getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n if (e.type.indexOf('touch') > -1) {\n this.isTouch = true;\n var touchArg = e;\n pageY = touchArg.changedTouches[0].clientY;\n pageX = touchArg.changedTouches[0].clientX;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.mouseY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n }\n };\n /**\n * Handles the mouse end.\n *\n * @returns {boolean} Mouse end of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseEnd = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseUp, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n if (this.accumulationDataLabelModule && this.visibleSeries[0].dataLabel.visible) {\n this.accumulationDataLabelModule.move(e, this.mouseX, this.mouseY, this.isTouch);\n }\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.move(e);\n }\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /*public removeSvgOffset(x: number, y: number): ChartLocation {\n let rect: ClientRect = this.element.getBoundingClientRect();\n let svgRect: ClientRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n return { x: (x - rect.left) - Math.max(svgRect.left - rect.left, 0), y: (y - rect.top) - Math.max(svgRect.top - rect.top, 0)};\n }*/\n /**\n * Handles the mouse start.\n *\n * @returns {boolean} Mouse start of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseStart = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseDown, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the accumulation chart resize.\n *\n * @returns {boolean} Resize method of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationResize = function () {\n var _this = this;\n this.animateSeries = false;\n var args = {\n accumulation: this.isBlazor ? {} : this,\n previousSize: new Size(this.availableSize.width, this.availableSize.height),\n name: resized,\n currentSize: new Size(0, 0),\n chart: this.isBlazor ? {} : this\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) {\n clearTimeout(_this.resizeTo);\n return;\n }\n calculateSize(_this);\n args.currentSize = _this.availableSize;\n _this.trigger(resized, args);\n _this.refreshSeries();\n _this.refreshChart();\n }, 500);\n }\n return false;\n };\n /**\n * Handles the print method for accumulation chart control.\n */\n AccumulationChart.prototype.print = function (id) {\n // To handle the print funtion in IE and Edge browsers\n var clippath = document.getElementById(this.element.id + '_Series_0').style.clipPath;\n document.getElementById(this.element.id + '_Series_0').style.clipPath = '';\n var exportChart = new ExportUtils(this);\n exportChart.print(id);\n document.getElementById(this.element.id + '_Series_0').style.clipPath = clippath;\n };\n /**\n * Export method for the chart.\n */\n AccumulationChart.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 * Applying styles for accumulation chart element\n */\n AccumulationChart.prototype.setStyle = function (element) {\n element.style.touchAction = 'element';\n element.style.msTouchAction = '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 };\n /**\n * Method to set the annotation content dynamically for accumulation.\n */\n AccumulationChart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var annotation = this.annotations[annotationIndex];\n var element;\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n if (content) {\n annotation.content = content;\n if (parentNode) {\n element = this.createElement('div');\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\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 * Handles the mouse move on accumulation chart.\n *\n * @returns {boolean} Mouse move of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseMove = function (e) {\n if (!getElement(this.element.id + '_svg')) {\n return false;\n }\n this.setMouseXY(e);\n this.trigger(chartMouseMove, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e.target, e);\n }\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.move(e);\n }\n if (this.accumulationDataLabelModule && this.visibleSeries[0] && this.visibleSeries[0].dataLabel.visible) {\n this.accumulationDataLabelModule.move(e, this.mouseX, this.mouseY);\n }\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.enableBorderOnMouseMove && this.type === 'Pie' && this.pieSeriesModule &&\n withInBounds(this.mouseX, this.mouseY, this.initialClipRect)) {\n this.pieSeriesModule.findSeries(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n return false;\n };\n AccumulationChart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_title') || targetId === (this.element.id + '_subTitle') ||\n targetId === (this.element.id + '_chart_legend_title'));\n if ((event.target.textContent.indexOf('...') > -1) && id) {\n var title = (targetId === (this.element.id + '_title')) ?\n this.title : (targetId === (this.element.id + '_subTitle')) ? 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 /**\n * Handles the mouse click on accumulation chart.\n *\n * @returns {boolean} Mouse click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationOnMouseClick = function (e) {\n this.setMouseXY(e);\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.click(e);\n }\n if (this.selectionMode !== 'None' && this.accumulationSelectionModule) {\n this.accumulationSelectionModule.calculateSelectedElements(this, e);\n }\n if (this.visibleSeries[0].explode) {\n this.accBaseModule.processExplode(e);\n }\n if (this.enableBorderOnMouseMove && this.pieSeriesModule && this.type === 'Pie') {\n this.pieSeriesModule.findSeries(e);\n }\n this.trigger(chartMouseClick, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.pointClick) {\n this.triggerPointEvent(pointClick, e.target, e);\n }\n return false;\n };\n AccumulationChart.prototype.triggerPointEvent = function (event, element, e) {\n var evt = e;\n var indexes = indexFinder(element.id, true);\n if (indexes.series >= 0 && indexes.point >= 0) {\n this.trigger(event, {\n series: this.isBlazor ? {} : this.series[indexes.series],\n point: this.series[indexes.series].points[indexes.point],\n seriesIndex: indexes.series, pointIndex: indexes.point,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n /**\n * Handles the mouse right click on accumulation chart.\n *\n * @returns {boolean} Right click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationRightClick = function (event) {\n if (event.buttons === 2 || event.pointerType === 'touch') {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n /**\n * Handles the mouse leave on accumulation chart.\n *\n * @returns {boolean} Mouse leave of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseLeave = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseLeave, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n this.notify(Browser.isPointer ? 'pointerleave' : 'mouseleave', e);\n var borderElement = document.getElementById(this.element.id + 'PointHover_Border');\n if (borderElement) {\n this.pieSeriesModule.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n return false;\n };\n /**\n * Method to set culture for chart\n */\n AccumulationChart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * Method to create SVG element for accumulation chart.\n */\n AccumulationChart.prototype.createPieSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * To Remove the SVG from accumulation chart.\n *\n * @returns {boolean} Remove svg.\n * @private\n */\n AccumulationChart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n removeElement('EJ2_legend_tooltip');\n removeElement('EJ2_datalabel_tooltip');\n removeElement(this.element.id + 'PointHover_Border');\n };\n /**\n * Method to create the secondary element for tooltip, datalabel and annotaitons.\n */\n AccumulationChart.prototype.createSecondaryElement = function () {\n var element = redrawElement(this.redraw, this.element.id + '_Secondary_Element') ||\n this.createElement('div', {\n id: this.element.id + '_Secondary_Element',\n styles: 'position: relative'\n });\n appendChildElement(false, this.element, element, this.redraw);\n };\n /**\n * Method to find visible series based on series types\n */\n AccumulationChart.prototype.calculateVisibleSeries = function () {\n this.visibleSeries = [];\n for (var i = 0, length_1 = this.series.length; i < length_1; i++) {\n this.series[i].index = i;\n if (this.series[i].type === this.type && this.visibleSeries.length === 0) {\n this.visibleSeries.push(this.series[i]);\n break;\n }\n }\n };\n /**\n * To find points from dataSource\n */\n AccumulationChart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.seriesCounts = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n series.dataModule = new Data(series.dataSource || this.dataSource, series.query);\n series.refreshDataManager(this, render);\n }\n };\n /**\n * To refresh the accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.refreshChart = function () {\n this.doGrouppingProcess();\n this.createPieSvg();\n this.calculateBounds();\n this.renderElements();\n removeElement('chartmeasuretext');\n };\n /**\n * Method to find groupped points\n */\n AccumulationChart.prototype.doGrouppingProcess = function () {\n var series = this.visibleSeries[0];\n if (!isNullOrUndefined(series.resultData) && ((!isNullOrUndefined(series.lastGroupTo) &&\n series.lastGroupTo !== series.groupTo))) {\n series.getPoints(series.resultData, this);\n }\n };\n /**\n * Method to calculate bounds for accumulation chart\n */\n AccumulationChart.prototype.calculateBounds = function () {\n this.initialClipRect = new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height);\n this.titleCollection = [];\n this.subTitleCollection = [];\n var titleHeight = 0;\n var subTitleHeight = 0;\n var maxWidth = 0;\n var titleWidth = 0;\n this.titleCollection = getTitle(this.title, this.titleStyle, this.initialClipRect.width);\n titleHeight = this.title ? measureText(this.title, this.titleStyle).height * this.titleCollection.length : titleHeight;\n if (this.subTitle) {\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle).height * this.subTitleCollection.length);\n }\n subtractRect(this.initialClipRect, new Rect(0, (subTitleHeight + titleHeight), this.margin.right + this.margin.left, this.margin.bottom + this.margin.top));\n this.calculateLegendBounds();\n };\n /*\n * Method to calculate legend bounds for accumulation chart\n */\n AccumulationChart.prototype.calculateLegendBounds = function () {\n if (!this.accumulationLegendModule || !this.legendSettings.visible) {\n return null;\n }\n this.accumulationLegendModule.getLegendOptions(this, this.visibleSeries);\n this.accumulationLegendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n };\n /**\n * To render elements for accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.renderElements = function () {\n this.renderBorder();\n this.createSecondaryElement();\n this.renderSeries();\n this.renderTitle();\n this.renderLegend();\n appendChildElement(false, this.element, this.svgObject, this.redraw);\n this.processSelection();\n this.processExplode();\n this.renderAnnotation();\n this.setSecondaryElementPosition();\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', this.series[0].dataLabel);\n this.trigger('loaded', { accumulation: this.isBlazor ? {} : this, chart: this.isBlazor ? {} : this });\n this.animateSeries = false;\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n *\n * @private\n */\n AccumulationChart.prototype.setSecondaryElementPosition = function () {\n var tooltipParent = getElement(this.element.id + '_Secondary_Element');\n if (!tooltipParent) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n tooltipParent.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n tooltipParent.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n /**\n * To render the annotaitions for accumulation series.\n *\n * @private\n */\n AccumulationChart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n };\n /**\n * Method to process the explode in accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.processExplode = function () {\n if (this.redraw) {\n return null;\n }\n if (!this.visibleSeries[0].explode) {\n return null;\n }\n this.accBaseModule.invokeExplode();\n };\n /**\n * Method to render series for accumulation chart\n */\n AccumulationChart.prototype.renderSeries = function () {\n if (!this.redraw) {\n this.svgObject.appendChild(this.renderer.createGroup({ id: this.element.id + '_SeriesCollection' }));\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && this[(firstToLowerCase(series.type) + 'SeriesModule')]) {\n this[(firstToLowerCase(series.type) + 'SeriesModule')].initProperties(this, series);\n series.renderSeries(this, this.redraw);\n }\n }\n };\n /**\n * Method to render border for accumulation chart\n */\n AccumulationChart.prototype.renderBorder = function () {\n var padding = this.border.width;\n appendChildElement(false, this.svgObject, this.renderer.drawRectangle(new RectOption(this.element.id + '_border', this.background || this.themeStyle.background, this.border, 1, new Rect(padding / 2, padding / 2, this.availableSize.width - padding, this.availableSize.height - padding))), this.redraw);\n // to draw back ground image for accumulation chart\n var backGroundImage = this.backgroundImage;\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - padding, this.availableSize.width - padding, backGroundImage, 0, 0, this.element.id + '_background', 'visible', 'none');\n appendChildElement(false, this.svgObject, this.renderer.drawImage(image), this.redraw);\n }\n };\n /**\n * Method to render legend for accumulation chart\n */\n AccumulationChart.prototype.renderLegend = function () {\n if (!this.accumulationLegendModule || !this.legendSettings.visible) {\n return null;\n }\n if (this.accumulationLegendModule.legendCollections.length) {\n if (this.visibleSeries[0].type === 'Pie') {\n this.accumulationLegendModule.getSmartLegendLocation(this.visibleSeries[0].labelBound, this.accumulationLegendModule.legendBounds, this.margin);\n }\n this.accumulationLegendModule.renderLegend(this, this.legendSettings, this.accumulationLegendModule.legendBounds, this.redraw);\n }\n };\n /**\n * To process the selection in accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.processSelection = function () {\n if (!this.accumulationSelectionModule || this.selectionMode === 'None') {\n return null;\n }\n var selectedDataIndexes = extend([], this.accumulationSelectionModule.selectedDataIndexes, null, true);\n this.accumulationSelectionModule.invokeSelection(this);\n if (selectedDataIndexes.length > 0) {\n this.accumulationSelectionModule.selectedDataIndexes = selectedDataIndexes;\n this.accumulationSelectionModule.redrawSelection(this);\n }\n };\n /**\n * To render title for accumulation chart\n */\n AccumulationChart.prototype.renderTitle = function () {\n var margin = this.margin;\n if (!this.title) {\n return null;\n }\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var titleSize = measureText(this.title, this.titleStyle);\n var rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var options = new TextOption(this.element.id + '_title', titlePositionX(rect, this.titleStyle), this.margin.top + (titleSize.height * 3 / 4), getAnchor, this.titleCollection, '', 'auto');\n var element = textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitle, this.svgObject, false, this.redraw);\n if (element) {\n element.setAttribute('aria-label', this.title);\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n };\n AccumulationChart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = function (alignment) {\n return alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n };\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle);\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth / 2) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n var subTitleOption = new TextOption(this.element.id + '_subTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, getAnchor(this.subTitleStyle.textAlignment), this.subTitleCollection, '', 'auto');\n textElement(this.renderer, subTitleOption, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartTitle, this.svgObject, false, this.redraw);\n };\n /**\n * To get the series parent element\n *\n * @private\n */\n AccumulationChart.prototype.getSeriesElement = function () {\n return this.svgObject.getElementsByTagName('g')[0];\n };\n /**\n * To refresh the all visible series points\n *\n * @private\n */\n AccumulationChart.prototype.refreshSeries = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.refreshPoints(series.points);\n }\n };\n /**\n * To refresh points label region and visible\n *\n * @private\n */\n AccumulationChart.prototype.refreshPoints = function (points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n point.labelPosition = null;\n point.labelRegion = null;\n point.labelVisible = true;\n }\n };\n /**\n * To get Module name\n *\n * @private\n */\n AccumulationChart.prototype.getModuleName = function () {\n return 'accumulationchart';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n AccumulationChart.prototype.destroy = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-accumulationchart');\n this.removeSvg();\n this.svgObject = null;\n }\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]} required modules\n * @private\n */\n AccumulationChart.prototype.requiredModules = function () {\n var modules = [];\n var enableAnnotation = false;\n modules.push({\n member: this.type + 'Series',\n args: [this]\n });\n if (this.legendSettings.visible) {\n modules.push({\n member: 'AccumulationLegend',\n args: [this]\n });\n }\n if (this.findDatalabelVisibility()) {\n modules.push({\n member: 'AccumulationDataLabel',\n args: [this]\n });\n }\n if (this.tooltip.enable) {\n modules.push({\n member: 'AccumulationTooltip',\n args: [this]\n });\n }\n if (this.selectionMode !== 'None') {\n modules.push({\n member: 'AccumulationSelection',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To find datalabel visibility in series\n */\n AccumulationChart.prototype.findDatalabelVisibility = function () {\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.dataLabel.visible) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get visible series for accumulation chart by index\n */\n AccumulationChart.prototype.changeVisibleSeries = 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 * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n AccumulationChart.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n */\n AccumulationChart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var update = {\n refreshElements: false, refreshBounds: false\n };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'theme':\n this.animateSeries = true;\n break;\n case 'title':\n case 'subTitle':\n case 'height':\n case 'width':\n case 'margin':\n update.refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n update.refreshBounds = true;\n }\n else {\n update.refreshElements = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n update.refreshBounds = true;\n }\n else {\n update.refreshElements = true;\n }\n break;\n case 'legendSettings':\n update.refreshBounds = true;\n update.refreshElements = true;\n break;\n case 'dataSource':\n this.processData(false);\n update.refreshBounds = true;\n break;\n case 'series':\n if (!this.animateselected) {\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 if (this.isBlazor && (series.startAngle || series.endAngle || series.explodeOffset || series.neckHeight ||\n series.neckWidth || series.radius || series.innerRadius || series.groupMode || series.emptyPointSettings)) {\n blazorProp = true;\n }\n if (newProp.series[i] && (newProp.series[i].dataSource || newProp.series[i].yName || newProp.series[i].xName ||\n newProp.series[i].dataLabel || blazorProp)) {\n extend(this.changeVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n if (newProp.series[i] && newProp.series[i].explodeIndex &&\n newProp.series[i].explodeIndex !== oldProp.series[i].explodeIndex) {\n this.accBaseModule.explodePoints(newProp.series[i].explodeIndex, this);\n this.accBaseModule.deExplodeAll(newProp.series[i].explodeIndex, this.enableAnimation ? 300 : 0);\n }\n }\n if (seriesRefresh) {\n this.processData(false);\n update.refreshBounds = true;\n }\n }\n this.animateselected = false;\n this.redraw = false;\n break;\n case 'locale':\n case 'currencyCode':\n _super.prototype.refresh.call(this);\n break;\n case 'background':\n case 'border':\n case 'annotations':\n case 'enableSmartLabels':\n update.refreshElements = true;\n break;\n case 'isMultiSelect':\n case 'selectedDataIndexes':\n case 'selectionMode':\n if (this.accumulationSelectionModule) {\n if (isNullOrUndefined(this.accumulationSelectionModule.selectedDataIndexes)) {\n this.accumulationSelectionModule.invokeSelection(this);\n }\n else {\n this.accumulationSelectionModule.redrawSelection(this);\n }\n }\n break;\n }\n }\n if (!update.refreshBounds && update.refreshElements) {\n this.createPieSvg();\n this.renderElements();\n }\n else if (update.refreshBounds) {\n this.refreshSeries();\n this.createPieSvg();\n this.calculateBounds();\n this.renderElements();\n }\n };\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Complex({}, PieCenter)\n ], AccumulationChart.prototype, \"center\", void 0);\n __decorate([\n Property('')\n ], AccumulationChart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex(Theme.chartTitleFont, Font)\n ], AccumulationChart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex(Theme.chartSubTitleFont, Font)\n ], AccumulationChart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], AccumulationChart.prototype, \"legendSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], AccumulationChart.prototype, \"tooltip\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"highLightMode\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableBorderOnMouseMove\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Collection([], Indexes)\n ], AccumulationChart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Complex({}, Margin)\n ], AccumulationChart.prototype, \"margin\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableSmartLabels\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], AccumulationChart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"background\", void 0);\n __decorate([\n Collection([{}], AccumulationSeries)\n ], AccumulationChart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], AccumulationAnnotationSettings)\n ], AccumulationChart.prototype, \"annotations\", void 0);\n __decorate([\n Property('Material')\n ], AccumulationChart.prototype, \"theme\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"allowExport\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"afterExport\", void 0);\n __decorate([\n Property('USD')\n ], AccumulationChart.prototype, \"currencyCode\", void 0);\n AccumulationChart = __decorate([\n NotifyPropertyChanges\n ], AccumulationChart);\n return AccumulationChart;\n}(Component));\nexport { AccumulationChart };\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AccumulationSeriesCollectionDirective = /** @class */ (function (_super) {\n __extends(AccumulationSeriesCollectionDirective, _super);\n function AccumulationSeriesCollectionDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccumulationSeriesCollectionDirective.prototype.render = function () {\n return;\n };\n AccumulationSeriesCollectionDirective = __decorate([\n EJComponentDecorator({})\n ], AccumulationSeriesCollectionDirective);\n return AccumulationSeriesCollectionDirective;\n}(Vue));\nexport { AccumulationSeriesCollectionDirective };\nexport var AccumulationSeriesCollectionPlugin = {\n name: 'e-accumulation-series-collection',\n install: function (Vue) {\n Vue.component(AccumulationSeriesCollectionPlugin.name, AccumulationSeriesCollectionDirective);\n }\n};\nvar AccumulationSeriesDirective = /** @class */ (function (_super) {\n __extends(AccumulationSeriesDirective, _super);\n function AccumulationSeriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccumulationSeriesDirective.prototype.render = function () {\n return;\n };\n AccumulationSeriesDirective = __decorate([\n EJComponentDecorator({})\n ], AccumulationSeriesDirective);\n return AccumulationSeriesDirective;\n}(Vue));\nexport { AccumulationSeriesDirective };\nexport var AccumulationSeriesPlugin = {\n name: 'e-accumulation-series',\n install: function (Vue) {\n Vue.component(AccumulationSeriesPlugin.name, AccumulationSeriesDirective);\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AccumulationAnnotationsDirective = /** @class */ (function (_super) {\n __extends(AccumulationAnnotationsDirective, _super);\n function AccumulationAnnotationsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccumulationAnnotationsDirective.prototype.render = function () {\n return;\n };\n AccumulationAnnotationsDirective = __decorate([\n EJComponentDecorator({})\n ], AccumulationAnnotationsDirective);\n return AccumulationAnnotationsDirective;\n}(Vue));\nexport { AccumulationAnnotationsDirective };\nexport var AccumulationAnnotationsPlugin = {\n name: 'e-accumulation-annotations',\n install: function (Vue) {\n Vue.component(AccumulationAnnotationsPlugin.name, AccumulationAnnotationsDirective);\n }\n};\nvar AccumulationAnnotationDirective = /** @class */ (function (_super) {\n __extends(AccumulationAnnotationDirective, _super);\n function AccumulationAnnotationDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccumulationAnnotationDirective.prototype.render = function () {\n return;\n };\n AccumulationAnnotationDirective = __decorate([\n EJComponentDecorator({})\n ], AccumulationAnnotationDirective);\n return AccumulationAnnotationDirective;\n}(Vue));\nexport { AccumulationAnnotationDirective };\nexport var AccumulationAnnotationPlugin = {\n name: 'e-accumulation-annotation',\n install: function (Vue) {\n Vue.component(AccumulationAnnotationPlugin.name, AccumulationAnnotationDirective);\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 { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { AccumulationChart } from '@syncfusion/ej2-charts';\nimport { AccumulationSeriesCollectionDirective, AccumulationSeriesDirective, AccumulationSeriesCollectionPlugin, AccumulationSeriesPlugin } from './series.directive';\nimport { AccumulationAnnotationsDirective, AccumulationAnnotationDirective, AccumulationAnnotationsPlugin, AccumulationAnnotationPlugin } from './annotations.directive';\nexport var properties = ['allowExport', 'annotations', 'background', 'backgroundImage', 'border', 'center', 'currencyCode', 'dataSource', 'enableAnimation', 'enableBorderOnMouseMove', 'enableExport', 'enablePersistence', 'enableRtl', 'enableSmartLabels', 'height', 'highLightMode', 'highlightPattern', 'isMultiSelect', 'legendSettings', 'locale', 'margin', 'selectedDataIndexes', 'selectionMode', 'selectionPattern', 'series', 'subTitle', 'subTitleStyle', 'theme', 'title', 'titleStyle', 'tooltip', 'useGroupingSeparator', 'width', 'afterExport', 'animationComplete', 'annotationRender', 'beforePrint', 'beforeResize', 'chartMouseClick', 'chartMouseDown', 'chartMouseLeave', 'chartMouseMove', 'chartMouseUp', 'legendRender', 'load', 'loaded', 'pointClick', 'pointMove', 'pointRender', 'resized', 'seriesRender', 'textRender', 'tooltipRender'];\nexport var modelProps = ['dataSource'];\n/**\n * Represents Vuejs AccumulationChart Component\n * ```vue\n * \n * ```\n */\nvar AccumulationChartComponent = /** @class */ (function (_super) {\n __extends(AccumulationChartComponent, _super);\n function AccumulationChartComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = true;\n _this.tagMapper = { \"e-accumulation-series-collection\": \"e-accumulation-series\", \"e-accumulation-annotations\": \"e-accumulation-annotation\" };\n _this.tagNameMapper = { \"e-accumulation-series-collection\": \"e-series\", \"e-accumulation-annotations\": \"e-annotations\" };\n _this.ej2Instances = new AccumulationChart({});\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 return _this;\n }\n AccumulationChartComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n AccumulationChartComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\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 this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n AccumulationChartComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n AccumulationChartComponent.prototype.export = function (type, fileName) {\n return this.ej2Instances.export(type, fileName);\n };\n AccumulationChartComponent.prototype.print = function (id) {\n return this.ej2Instances.print(id);\n };\n AccumulationChartComponent.prototype.setAnnotationValue = function (annotationIndex, content) {\n return this.ej2Instances.setAnnotationValue(annotationIndex, content);\n };\n AccumulationChartComponent.prototype.titleTooltip = function (event, x, y, isTouch) {\n return this.ej2Instances.titleTooltip(event, x, y, isTouch);\n };\n AccumulationChartComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], AccumulationChartComponent);\n return AccumulationChartComponent;\n}(ComponentBase));\nexport { AccumulationChartComponent };\nexport var AccumulationChartPlugin = {\n name: 'ejs-accumulationchart',\n install: function (Vue) {\n Vue.component(AccumulationChartPlugin.name, AccumulationChartComponent);\n Vue.component(AccumulationSeriesPlugin.name, AccumulationSeriesDirective);\n Vue.component(AccumulationSeriesCollectionPlugin.name, AccumulationSeriesCollectionDirective);\n Vue.component(AccumulationAnnotationPlugin.name, AccumulationAnnotationDirective);\n Vue.component(AccumulationAnnotationsPlugin.name, AccumulationAnnotationsDirective);\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 @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * AccumulationChart legend\n */\nimport { extend, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { pointByIndex } from '../model/acc-base';\nimport { BaseLegend, LegendOptions } from '../../common/legend/legend';\nimport { Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { textTrim, getElement, blazorTemplatesReset } from '../../common/utils/helper';\n/**\n * AccumulationLegend module used to render `Legend` for Accumulation chart.\n */\nvar AccumulationLegend = /** @class */ (function (_super) {\n __extends(AccumulationLegend, _super);\n /**\n * Constructor for Accumulation Legend.\n *\n * @param {AccumulationChart} chart Get a chart as a parameter.\n */\n function AccumulationLegend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.titleRect = new Rect(0, chart.margin.top, 0, 0);\n return _this;\n }\n /**\n * Get the legend options.\n *\n * @returns {void} Legend options.\n * @private\n */\n AccumulationLegend.prototype.getLegendOptions = function (chart, series) {\n this.legendCollections = [];\n for (var i = 0; i < 1; i++) {\n var seriesType = series[i].type;\n if (seriesType === 'Pie' || seriesType === 'Doughnut') {\n seriesType = (series[i].innerRadius !== '0' && series[i].innerRadius !== '0%') ?\n 'Doughnut' : 'Pie';\n }\n for (var _i = 0, _a = series[i].points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!isNullOrUndefined(point.x) && !isNullOrUndefined(point.y)) {\n this.legendCollections.push(new LegendOptions(point.x.toString(), point.color, series[i].legendShape, point.visible, seriesType, point.legendImageUrl, null, null, point.index, series[i].index));\n }\n }\n }\n };\n /**\n * To find legend bounds for accumulation chart.\n *\n * @private\n */\n AccumulationLegend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n var extraWidth = 0;\n var extraHeight = 0;\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var titlePlusArrowSpace = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = legend.enablePages ? 0 : this.arrowHeight;\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.width += extraWidth;\n legendBounds.height += extraHeight;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var shapeWidth = legend.shapeWidth;\n var rowWidth = 0;\n var rowCount = 0;\n var columnWidth = [];\n var columnHeight = 0;\n var legendWidth = 0;\n var titleHeight = 0;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle).height, legend.shapeHeight);\n var legendEventArgs;\n var render = false;\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n legendEventArgs = { fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n name: 'legendRender', cancel: false };\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.textSize = measureText(legendOption.text, legend.textStyle);\n if (legendOption.render && legendOption.text !== '') {\n render = true;\n legendWidth = shapeWidth + shapePadding + legendOption.textSize.width + padding;\n if (this.isVertical) {\n ++rowCount;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + this.legendTitleSize.height + arrowHeight;\n if ((rowCount * (this.maxItemHeight + padding)) + padding + arrowHeight > legendBounds.height) {\n columnHeight = Math.max(columnHeight, (rowCount * (this.maxItemHeight + padding)) + padding + arrowHeight);\n rowWidth = rowWidth + maximumWidth;\n columnWidth.push(maximumWidth);\n this.totalPages = Math.max(rowCount, this.totalPages || 1);\n maximumWidth = 0;\n rowCount = 1;\n }\n maximumWidth = Math.max(legendWidth, maximumWidth);\n }\n else {\n if (!legend.enablePages) { // For new legend navigation support\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n rowWidth = rowWidth + legendWidth;\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace)) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - legendWidth));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = legendWidth;\n rowCount++;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + this.legendTitleSize.height;\n }\n }\n }\n }\n titleHeight = titlePosition === 'Top' ? this.legendTitleSize.height : 0;\n if (this.isVertical) {\n rowWidth = rowWidth + maximumWidth;\n this.isPaging = legendBounds.width < (rowWidth + padding);\n columnHeight = Math.max(columnHeight, ((this.totalPages || 1) * (this.maxItemHeight + padding)) + padding + arrowHeight);\n this.isPaging = this.isPaging && (this.totalPages > 1);\n if (columnWidth[columnWidth.length - 1] !== maximumWidth) {\n columnWidth.push(maximumWidth);\n }\n }\n else {\n this.isPaging = legendBounds.height < columnHeight;\n columnHeight = !legend.enablePages && this.isPaging ? (this.maxItemHeight + padding) + padding + titleHeight : columnHeight;\n this.totalPages = this.totalRowCount = rowCount;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleHeight);\n if (!this.isPaging) { // For title left and right position\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n }\n this.maxColumns = 0; // initialization for max columns\n var width = this.isVertical ? this.getMaxColumn(columnWidth, legendBounds.width, padding, rowWidth + padding) :\n Math.max(rowWidth + padding, maximumWidth);\n if (render) { // if any legends not skipped in event check\n this.setBounds(width, columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /**\n * To find maximum column size for legend\n *\n * @returns {number} Get a maximum columns.\n */\n AccumulationLegend.prototype.getMaxColumn = function (columns, width, padding, rowWidth) {\n var maxPageColumn = padding;\n this.maxColumnWidth = Math.max.apply(null, columns);\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n maxPageColumn += this.maxColumnWidth;\n this.maxColumns++;\n if (maxPageColumn + padding > width) {\n maxPageColumn -= this.maxColumnWidth;\n this.maxColumns--;\n break;\n }\n }\n this.isPaging = (maxPageColumn < rowWidth) && (this.totalPages > 1);\n if (maxPageColumn === padding) {\n maxPageColumn = width;\n }\n this.maxColumns = Math.max(1, this.maxColumns);\n this.maxWidth = maxPageColumn;\n return maxPageColumn;\n };\n /**\n * To find available width from legend x position.\n *\n * @returns {number} Get a available width.\n */\n AccumulationLegend.prototype.getAvailWidth = function (tx, width) {\n if (this.isVertical) {\n width = this.maxWidth;\n }\n return width - ((this.legend.padding * 2) + this.legend.shapeWidth + this.legend.shapePadding);\n };\n /**\n * To find legend rendering locations from legend options.\n *\n * @private\n */\n AccumulationLegend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n if (this.isVertical) {\n if (count === firstLegend || (prevLegend.location.y + (this.maxItemHeight * 1.5) + (padding * 2) > rect.y + rect.height)) {\n legendOption.location.x = prevLegend.location.x + ((count === firstLegend) ? 0 : this.maxColumnWidth);\n legendOption.location.y = start.y;\n this.pageXCollections.push(legendOption.location.x - (this.legend.shapeWidth / 2) - padding);\n this.totalPages++;\n }\n else {\n legendOption.location.x = prevLegend.location.x;\n legendOption.location.y = prevLegend.location.y + this.maxItemHeight + padding;\n }\n }\n else {\n var previousBound = (prevLegend.location.x + textPadding + prevLegend.textSize.width);\n if ((previousBound + (legendOption.textSize.width + textPadding)) > (rect.x + rect.width + this.legend.shapeWidth / 2)) {\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.maxItemHeight + padding;\n legendOption.location.x = start.x;\n }\n else {\n legendOption.location.y = prevLegend.location.y;\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n }\n this.totalPages = this.totalRowCount;\n }\n var availablewidth = this.getAvailWidth(legendOption.location.x, this.legendBounds.width);\n legendOption.text = textTrim(+availablewidth.toFixed(4), legendOption.text, this.legend.textStyle);\n };\n /**\n * finding the smart legend place according to positions.\n *\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.getSmartLegendLocation = function (labelBound, legendBound, margin) {\n var space;\n switch (this.position) {\n case 'Left':\n space = ((labelBound.x - legendBound.width) - margin.left) / 2;\n legendBound.x = (labelBound.x - legendBound.width) < margin.left ? legendBound.x :\n (labelBound.x - legendBound.width) - space;\n break;\n case 'Right':\n space = ((this.chart.availableSize.width - margin.right) - (labelBound.x + labelBound.width + legendBound.width)) / 2;\n legendBound.x = (labelBound.x + labelBound.width + legendBound.width) > (this.chart.availableSize.width - margin.right) ?\n legendBound.x : (labelBound.x + labelBound.width + space);\n break;\n case 'Top':\n this.getTitleRect(this.chart);\n space = ((labelBound.y - legendBound.height) - (this.titleRect.y + this.titleRect.height)) / 2;\n legendBound.y = (labelBound.y - legendBound.height) < margin.top ? legendBound.y :\n (labelBound.y - legendBound.height) - space;\n break;\n case 'Bottom':\n space = ((this.chart.availableSize.height - margin.bottom) - (labelBound.y + labelBound.height + legendBound.height)) / 2;\n legendBound.y = labelBound.y + labelBound.height + legendBound.height > (this.chart.availableSize.height - margin.bottom) ?\n legendBound.y : (labelBound.y + labelBound.height) + space;\n break;\n }\n };\n /**\n * To get title rect.\n *\n * @returns {void} Get a title rect.\n */\n AccumulationLegend.prototype.getTitleRect = function (accumulation) {\n if (!accumulation.title) {\n return null;\n }\n var titleSize = measureText(accumulation.title, accumulation.titleStyle);\n this.titleRect = new Rect(accumulation.availableSize.width / 2 - titleSize.width / 2, accumulation.margin.top, titleSize.width, titleSize.height);\n };\n /**\n * To get legend by index\n *\n * @returns {LegendOptions} Return legend index.\n */\n AccumulationLegend.prototype.legendByIndex = function (index, legendCollections) {\n for (var _i = 0, legendCollections_1 = legendCollections; _i < legendCollections_1.length; _i++) {\n var legend = legendCollections_1[_i];\n if (legend.pointIndex === index) {\n return legend;\n }\n }\n return null;\n };\n /**\n * To show or hide the legend on clicking the legend.\n *\n * @returns {void}\n */\n AccumulationLegend.prototype.click = function (event) {\n var targetId = event.target.id;\n var chart = this.chart;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_', this.legendID + '_shape_marker_'];\n if (this.chart.accumulationSelectionModule) {\n var selectedDataIndexes = extend([], this.chart.accumulationSelectionModule.selectedDataIndexes, null, true);\n }\n this.chart.animateSeries = false;\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 var pointIndex = parseInt(targetId.split(id)[1], 10);\n if (this.chart.legendSettings.toggleVisibility && !isNaN(pointIndex)) {\n var currentSeries = this.chart.visibleSeries[0];\n var point = pointByIndex(pointIndex, currentSeries.points);\n var legendOption = this.legendByIndex(pointIndex, this.legendCollections);\n point.visible = !point.visible;\n legendOption.visible = point.visible;\n currentSeries.sumOfPoints += point.visible ? point.y : -point.y;\n chart.redraw = chart.enableAnimation;\n this.sliceVisibility(pointIndex, point.visible);\n chart.removeSvg();\n //To remove the blazor templates\n blazorTemplatesReset(chart);\n this.chart.refreshPoints(currentSeries.points);\n this.chart.renderElements();\n }\n else if (this.chart.accumulationSelectionModule && !isNaN(pointIndex)) {\n this.chart.accumulationSelectionModule.legendSelection(this.chart, 0, pointIndex);\n }\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 chart.redraw = false;\n };\n /**\n * To translate the point elements by index and position\n */\n AccumulationLegend.prototype.sliceVisibility = function (index, isVisible) {\n var sliceId = this.chart.element.id + '_Series_0_Point_';\n if (this.chart.visibleSeries[0].dataLabel.visible) {\n sliceId = this.chart.element.id + '_datalabel_Series_0_';\n this.sliceAnimate(getElement(sliceId + 'g_' + index), isVisible);\n }\n };\n /**\n * Slice animation\n *\n * @param {Element} element slice element.\n * @param {boolean} isVisible boolean value of slice.\n * @returns {void} slice animation method.\n */\n AccumulationLegend.prototype.sliceAnimate = function (element, isVisible) {\n if (!element) {\n return null;\n }\n new Animation({}).animate(element, {\n duration: 300,\n delay: 0,\n name: isVisible ? 'FadeIn' : 'FadeOut',\n end: function (args) {\n args.element.style.visibility = isVisible ? 'visible' : 'hidden';\n }\n });\n };\n /**\n * Get module name\n *\n * @returns {string} Return module name.\n */\n AccumulationLegend.prototype.getModuleName = function () {\n return 'AccumulationLegend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return AccumulationLegend;\n}(BaseLegend));\nexport { AccumulationLegend };\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 @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * AccumulationChart Tooltip file\n */\nimport { Browser, remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { AccPointData, withInBounds, indexFinder } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender } from '../../common/model/constants';\n/**\n * `AccumulationTooltip` module is used to render tooltip for accumulation chart.\n */\nvar AccumulationTooltip = /** @class */ (function (_super) {\n __extends(AccumulationTooltip, _super);\n function AccumulationTooltip(accumulation) {\n var _this = _super.call(this, accumulation) || this;\n _this.accumulation = accumulation;\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n AccumulationTooltip.prototype.addEventListener = function () {\n if (this.accumulation.isDestroyed) {\n return;\n }\n this.accumulation.on(Browser.isPointer ? 'pointerleave' : 'mouseleave', this.mouseLeaveHandler, this);\n this.accumulation.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.accumulation.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n AccumulationTooltip.prototype.mouseLeaveHandler = function (e) {\n this.removeTooltip(this.accumulation.tooltip.fadeOutDuration);\n };\n AccumulationTooltip.prototype.mouseUpHandler = function (e) {\n var control = this.accumulation;\n if (control.tooltip.enable && control.isTouch && withInBounds(control.mouseX, control.mouseY, control.initialClipRect)) {\n this.tooltip(e);\n this.removeTooltip(2000);\n }\n };\n AccumulationTooltip.prototype.mouseMoveHandler = function (e) {\n var control = this.accumulation;\n // Tooltip for chart series.\n if (control.tooltip.enable && withInBounds(control.mouseX, control.mouseY, control.initialClipRect)) {\n this.tooltip(e);\n }\n };\n /**\n * Renders the tooltip.\n * @param {PointerEvent} event - Mouse move event.\n * @return {void}\n */\n AccumulationTooltip.prototype.tooltip = function (event) {\n var svgElement = this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0;\n var tooltipDiv = this.getTooltipElement(isTooltip);\n this.renderSeriesTooltip(event, this.accumulation, !isTooltip, tooltipDiv);\n };\n AccumulationTooltip.prototype.renderSeriesTooltip = function (e, chart, isFirst, tooltipDiv) {\n var data = this.getPieData(e, chart, chart.mouseX, chart.mouseY);\n var rect = chart.initialClipRect;\n this.currentPoints = [];\n if (data.point && (!this.previousPoints[0] || (this.previousPoints[0].point !== data.point))) {\n if (this.previousPoints[0] && data.point.index === this.previousPoints[0].point.index\n && data.series.index === this.previousPoints[0].series.index) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, false)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data, chart.tooltip), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove) {\n this.removeTooltip(this.accumulation.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n }\n };\n AccumulationTooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText, firstText) {\n var _this = this;\n if (firstText === void 0) { firstText = true; }\n var template;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, point: point.point, textStyle: this.textStyle,\n series: this.accumulation.isBlazor ? {} : point.series, headerText: headerText,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index,\n pointIndex: point.point.index, pointText: point.point.text, seriesName: point.series.name }\n };\n var tooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.headerText = argsData.headerText;\n _this.createTooltip(_this.chart, isFirst, point.point.symbolLocation, point.series.clipRect, point.point, ['Circle'], 0, _this.chart.initialClipRect, null, point.point, _this.accumulation.tooltip.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n tooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, tooltipSuccess);\n };\n AccumulationTooltip.prototype.getPieData = function (e, chart, x, y) {\n var target = e.target;\n var id = indexFinder(target.id, true);\n if (!isNaN(id.series)) {\n var seriesIndex = id.series;\n var pointIndex = id.point;\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var series = this.getSeriesFromIndex(seriesIndex, chart.visibleSeries);\n if (series.enableTooltip) {\n return new AccPointData(series.points[pointIndex], series);\n }\n }\n }\n return new AccPointData(null, null);\n };\n /**\n * To get series from index\n */\n AccumulationTooltip.prototype.getSeriesFromIndex = function (index, visibleSeries) {\n return visibleSeries[0];\n };\n AccumulationTooltip.prototype.getTooltipText = function (data, tooltip) {\n var series = data.series;\n var format = this.accumulation.useGroupingSeparator ? '${point.x} : ${point.separatorY}'\n : '${point.x} : ${point.y}';\n format = tooltip.format ? tooltip.format : format;\n return this.parseTemplate(data.point, series, format);\n };\n AccumulationTooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n AccumulationTooltip.prototype.parseTemplate = function (point, series, format) {\n var value;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n value = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(value.source, point[dataValue]);\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n value = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(value.source, textValue);\n }\n return format;\n };\n /**\n * Get module name\n */\n AccumulationTooltip.prototype.getModuleName = function () {\n return 'AccumulationTooltip';\n };\n /**\n * To destroy the Tooltip.\n * @return {void}\n * @private\n */\n AccumulationTooltip.prototype.destroy = function (chart) {\n /**\n * Destroy method calling here\n */\n };\n return AccumulationTooltip;\n}(BaseTooltip));\nexport { AccumulationTooltip };\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-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/**\n * AccumulationChart DataLabel module file\n */\nimport { extend, createElement, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Rect, PathOption, measureText, TextOption } from '@syncfusion/ej2-svg-base';\nimport { ChartLocation, degreeToLocation, isOverlap, stringToNumber, getAngle, appendChildElement } from '../../common/utils/helper';\nimport { textTrim, subtractThickness, Thickness, getElement } from '../../common/utils/helper';\nimport { removeElement, RectOption, textElement, showTooltip } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor, containsRect } from '../../common/utils/helper';\nimport { getSeriesFromIndex } from '../model/acc-base';\nimport { textRender } from '../../common/model/constants';\nimport { getFontStyle, createTemplate, measureElementRect, templateAnimate } from '../../common/utils/helper';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * AccumulationDataLabel module used to render `dataLabel`.\n */\nvar AccumulationDataLabel = /** @class */ (function (_super) {\n __extends(AccumulationDataLabel, _super);\n function AccumulationDataLabel(accumulation) {\n var _this = _super.call(this, accumulation) || this;\n _this.rightSideRenderingPoints = [];\n _this.leftSideRenderingPoints = [];\n _this.id = accumulation.element.id + '_datalabel_Series_';\n if (accumulation.title) {\n var titleSize = measureText(accumulation.title, accumulation.titleStyle);\n _this.titleRect = new Rect(accumulation.availableSize.width / 2 - titleSize.width / 2, accumulation.margin.top, titleSize.width, titleSize.height);\n }\n return _this;\n }\n /**\n * Method to get datalabel text location.\n *\n * @private\n */\n AccumulationDataLabel.prototype.getDataLabelPosition = function (point, dataLabel, textSize, points) {\n var radius = this.isCircular() ? (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n //let radius: number = this.isCircular() ? this.labelRadius : this.getLabelDistance(point, dataLabel);\n this.getLabelRegion(point, dataLabel.position, textSize, radius, this.marginValue);\n point.labelAngle = point.midAngle;\n point.labelPosition = dataLabel.position;\n if (this.accumulation.enableSmartLabels) {\n this.getSmartLabel(point, dataLabel, textSize, points);\n }\n };\n /**\n * Method to get datalabel bound.\n */\n AccumulationDataLabel.prototype.getLabelRegion = function (point, position, textSize, labelRadius, margin, endAngle) {\n if (endAngle === void 0) { endAngle = 0; }\n var labelAngle = endAngle || point.midAngle;\n var space = 10;\n var location = degreeToLocation(labelAngle, labelRadius, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n location.y = (position === 'Inside') ? (location.y - textSize.height / 2) : location.y;\n location.x = (position === 'Inside') ? (location.x - textSize.width / 2) : location.x;\n point.labelRegion = new Rect(location.x, location.y, textSize.width + (margin * 2), textSize.height + (margin * 2));\n if (position === 'Outside') {\n point.labelRegion.y -= point.labelRegion.height / 2;\n if (labelAngle >= 90 && labelAngle <= 270) {\n point.labelRegion.x -= (point.labelRegion.width + space);\n }\n else {\n point.labelRegion.x += space;\n }\n }\n };\n /**\n * Method to get datalabel smart position.\n */\n AccumulationDataLabel.prototype.getSmartLabel = function (point, dataLabel, textSize, points) {\n var circular = this.isCircular();\n var labelRadius = circular ? this.radius : this.getLabelDistance(point, dataLabel);\n var connectorLength = circular ? (dataLabel.connectorStyle.length || '4%') :\n '0px';\n labelRadius += stringToNumber(connectorLength, labelRadius);\n var previousPoint = this.findPreviousPoint(points, point.index, point.labelPosition);\n if (dataLabel.position === 'Inside') {\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points)) || !circular && !containsRect(point.region, point.labelRegion)) {\n point.labelPosition = 'Outside';\n if (!circular) {\n labelRadius = this.getLabelDistance(point, dataLabel);\n }\n this.getLabelRegion(point, point.labelPosition, textSize, labelRadius, this.marginValue);\n previousPoint = this.findPreviousPoint(points, point.index, point.labelPosition);\n if (previousPoint && (isOverlap(point.labelRegion, previousPoint.labelRegion) ||\n this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius, textSize, this.marginValue);\n }\n }\n }\n else {\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points) || this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius, textSize, this.marginValue);\n }\n }\n if (this.isOverlapping(point, points) && (this.accumulation.type === 'Pyramid' || this.accumulation.type === 'Funnel')) {\n var position = 'OutsideLeft';\n var space = 10;\n var labelAngle = point.midAngle || 0;\n var labelRadius_1 = circular ? this.radius : this.getLabelDistance(point, dataLabel);\n var location_1 = degreeToLocation(labelAngle, -labelRadius_1, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n point.labelRegion = new Rect(location_1.x, location_1.y, textSize.width + (this.marginValue * 2), textSize.height + (this.marginValue * 2));\n point.labelRegion.y -= point.labelRegion.height / 2;\n point.labelRegion.x = point.labelRegion.x - space - point.labelRegion.width;\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points) || this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius_1, textSize, this.marginValue);\n }\n }\n };\n /**\n * To find trimmed datalabel tooltip needed.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.move = function (e, x, y, isTouch) {\n var _this = this;\n if (e.target.textContent.indexOf('...') > -1) {\n var targetId = e.target.id.split(this.id);\n if (targetId.length === 2) {\n var seriesIndex = parseInt(targetId[1].split('_text_')[0], 10);\n var pointIndex = parseInt(targetId[1].split('_text_')[1], 10);\n if (!isNaN(seriesIndex) && !isNaN(pointIndex)) {\n if (isTouch) {\n removeElement(this.accumulation.element.id + '_EJ2_Datalabel_Tooltip');\n }\n var point = getSeriesFromIndex(seriesIndex, (this.accumulation).visibleSeries).points[pointIndex];\n showTooltip(point.text || point.y.toString(), x, y, this.areaRect.width, this.accumulation.element.id + '_EJ2_Datalabel_Tooltip', getElement(this.accumulation.element.id + '_Secondary_Element'));\n }\n }\n }\n else {\n removeElement(this.accumulation.element.id + '_EJ2_Datalabel_Tooltip');\n }\n if (isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.accumulation.element.id + '_EJ2_Datalabel_Tooltip'); }, 1000);\n }\n };\n /**\n * To find previous valid label point\n *\n * @returns {AccPoints} Find the previous value of accumulation point.\n */\n AccumulationDataLabel.prototype.findPreviousPoint = function (points, index, position) {\n var point = points[0];\n for (var i = index - 1; i >= 0; i--) {\n point = points[i];\n if (point.visible && point.labelVisible && point.labelRegion && point.labelPosition === position) {\n return point;\n }\n }\n return null;\n };\n /**\n * To find current point datalabel is overlapping with other points\n *\n * @returns {boolean} It returns boolean value of overlapping.\n */\n AccumulationDataLabel.prototype.isOverlapping = function (currentPoint, points) {\n for (var i = currentPoint.index - 1; i >= 0; i--) {\n if (points[i].visible && points[i].labelVisible && points[i].labelRegion && currentPoint.labelRegion &&\n currentPoint.labelVisible && isOverlap(currentPoint.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n /**\n * To get text trimmed while exceeds the accumulation chart area.\n */\n AccumulationDataLabel.prototype.textTrimming = function (point, rect, font, position) {\n if (isOverlap(point.labelRegion, rect)) {\n var size = point.labelRegion.width;\n if (position === 'Right') {\n size = rect.x - point.labelRegion.x;\n }\n else if (position === 'Left') {\n size = point.labelRegion.x - (rect.x + rect.width);\n if (size < 0) {\n size += point.labelRegion.width;\n point.labelRegion.x = rect.x + rect.width;\n }\n }\n else if (position === 'InsideRight') {\n size = (rect.x + rect.width) - point.labelRegion.x;\n }\n else if (position === 'InsideLeft') {\n size = (point.labelRegion.x + point.labelRegion.width) - rect.x;\n if (size < point.labelRegion.width) {\n point.labelRegion.x = rect.x;\n }\n }\n else {\n this.setPointVisibileFalse(point);\n }\n if (point.labelVisible && point.labelRegion) {\n if (size < point.labelRegion.width) {\n point.label = textTrim(size - (this.marginValue * 2), point.label, font);\n point.labelRegion.width = size;\n }\n if (point.label.length === 3 && point.label.indexOf('...') > -1) {\n this.setPointVisibileFalse(point);\n }\n }\n }\n };\n /**\n * To set point label visible and region to disable.\n */\n AccumulationDataLabel.prototype.setPointVisibileFalse = function (point) {\n point.labelVisible = false;\n point.labelRegion = null;\n };\n /**\n * To set point label visible to enable.\n */\n AccumulationDataLabel.prototype.setPointVisibleTrue = function (point) {\n point.labelVisible = true;\n };\n /**\n * To set datalabel angle position for outside labels\n */\n AccumulationDataLabel.prototype.setOuterSmartLabel = function (previousPoint, point, border, labelRadius, textsize, margin) {\n if (!this.isCircular()) {\n this.setSmartLabelForSegments(point, previousPoint);\n }\n else {\n var labelAngle = this.getOverlappedAngle(previousPoint.labelRegion, point.labelRegion, point.midAngle, border * 2);\n this.getLabelRegion(point, 'Outside', textsize, labelRadius, margin, labelAngle);\n if (labelAngle > point.endAngle) {\n labelAngle = point.midAngle;\n //this.setPointVisibileFalse(point);\n }\n point.labelAngle = labelAngle;\n while (point.labelVisible && (isOverlap(previousPoint.labelRegion, point.labelRegion) || labelAngle <= previousPoint.labelAngle\n || this.isConnectorLineOverlapping(point, previousPoint))) {\n if (labelAngle > point.endAngle) {\n //this.setPointVisibileFalse(point);\n break;\n }\n point.labelAngle = labelAngle;\n this.getLabelRegion(point, 'Outside', textsize, labelRadius, margin, labelAngle);\n labelAngle += 0.1;\n }\n }\n };\n /**\n * Sets smart label positions for funnel and pyramid series\n *\n * @returns {void} setSmartLabelForSegments.\n */\n AccumulationDataLabel.prototype.setSmartLabelForSegments = function (point, prevPoint) {\n var textRegion = point.labelRegion;\n //let overlapWidth: number = prevPoint.labelRegion.x + prevPoint.labelRegion.width - textRegion.x;\n var overlapHeight = this.accumulation.type === 'Funnel' ?\n prevPoint.labelRegion.y - (textRegion.y + textRegion.height) :\n point.labelRegion.y - (prevPoint.labelRegion.y + prevPoint.labelRegion.height);\n if (overlapHeight < 0) {\n point.labelRegion.y += this.accumulation.type === 'Funnel' ? overlapHeight : -overlapHeight;\n }\n };\n /**\n * To find connector line overlapping.\n *\n * @returns {boolean} To find connector line overlapping or not.\n */\n AccumulationDataLabel.prototype.isConnectorLineOverlapping = function (point, previous) {\n var position;\n if (!this.isCircular() && point.labelRegion.x < point.region.x) {\n position = 'outsideLeft';\n }\n var start = this.getLabelLocation(point, position);\n var end = new ChartLocation(0, 0);\n this.getEdgeOfLabel(point.labelRegion, point.labelAngle, end, 0, point);\n var previousstart = this.getLabelLocation(previous);\n var previousend = new ChartLocation(0, 0);\n this.getEdgeOfLabel(previous.labelRegion, previous.labelAngle, previousend, 0, point);\n return this.isLineRectangleIntersect(start, end, point.labelRegion) ||\n this.isLineRectangleIntersect(start, end, previous.labelRegion) ||\n this.isLineRectangleIntersect(previousstart, previousend, point.labelRegion);\n };\n /**\n * To find two rectangle intersect\n *\n * @returns {boolean} To find line rectangle intersect value.\n */\n AccumulationDataLabel.prototype.isLineRectangleIntersect = function (line1, line2, rect) {\n var rectPoints = [\n new ChartLocation(Math.round(rect.x), Math.round(rect.y)),\n new ChartLocation(Math.round((rect.x + rect.width)), Math.round(rect.y)),\n new ChartLocation(Math.round((rect.x + rect.width)), Math.round((rect.y + rect.height))),\n new ChartLocation(Math.round(rect.x), Math.round((rect.y + rect.height)))\n ];\n line1.x = Math.round(line1.x);\n line1.y = Math.round(line1.y);\n line2.x = Math.round(line2.x);\n line2.y = Math.round(line2.y);\n for (var i = 0; i < rectPoints.length; i++) {\n if (this.isLinesIntersect(line1, line2, rectPoints[i], rectPoints[(i + 1) % rectPoints.length])) {\n return true;\n }\n }\n return false;\n };\n /**\n * To find two line intersect\n *\n * @returns {boolean} To find line intersect or not.\n */\n AccumulationDataLabel.prototype.isLinesIntersect = function (point1, point2, point11, point12) {\n var a1 = point2.y - point1.y;\n var b1 = point1.x - point2.x;\n var c1 = a1 * point1.x + b1 * point1.y;\n var a2 = point12.y - point11.y;\n var b2 = point11.x - point12.x;\n var c2 = a2 * point11.x + b2 * point11.y;\n var delta = a1 * b2 - a2 * b1;\n if (delta !== 0) {\n var x = (b2 * c1 - b1 * c2) / delta;\n var y = (a1 * c2 - a2 * c1) / delta;\n var lies = Math.min(point1.x, point2.x) <= x && x <= Math.max(point1.x, point2.x);\n lies = lies && Math.min(point1.y, point2.y) <= y && y <= Math.max(point1.y, point2.y);\n lies = lies && Math.min(point11.x, point12.x) <= x && x <= Math.max(point11.x, point12.x);\n lies = lies && Math.min(point11.y, point12.y) <= y && y <= Math.max(point11.y, point12.y);\n return lies;\n }\n return false;\n };\n /**\n * To get two rectangle overlapping angles.\n *\n * @returns {number} Get overlapped angle.\n */\n AccumulationDataLabel.prototype.getOverlappedAngle = function (first, second, angle, padding) {\n var x = first.x;\n if (angle >= 90 && angle <= 270) {\n second.y = first.y - (padding + second.height / 2);\n x = first.x + first.width;\n }\n else {\n second.y = first.y + first.height + padding;\n }\n return getAngle(this.center, new ChartLocation(x, second.y));\n };\n /**\n * To get connector line path\n *\n * @returns {string} Get connector line path.\n */\n AccumulationDataLabel.prototype.getConnectorPath = function (label, point, dataLabel, end) {\n if (end === void 0) { end = 0; }\n var connector = dataLabel.connectorStyle;\n var labelRadius = this.isCircular() ? (!this.isVariousRadius() ? this.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n //let labelRadius: number = this.isCircular() ? this.labelRadius : this.getLabelDistance(point, dataLabel);\n var start = this.getConnectorStartPoint(point, connector);\n var labelAngle = this.accumulation.enableSmartLabels ? point.midAngle : end || point.midAngle;\n var middle = new ChartLocation(0, 0);\n var endPoint = this.getEdgeOfLabel(label, labelAngle, middle, connector.width, point);\n if (connector.type === 'Curve') {\n if (this.isCircular()) {\n var r = labelRadius - (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius);\n //let r: number = labelRadius - this.radius;\n if (point.isLabelUpdated) {\n middle = this.getPerpendicularDistance(start, point);\n }\n else {\n middle = degreeToLocation(labelAngle, labelRadius - (r / 2), this.center);\n if (point.labelPosition === 'Outside' && dataLabel.position === 'Inside') {\n middle = degreeToLocation(labelAngle, labelRadius - r * 1.25, this.center);\n }\n }\n return 'M ' + start.x + ' ' + start.y + ' Q ' + middle.x + ' ' + middle.y + ' ' + endPoint.x + ' ' + endPoint.y;\n }\n else {\n return this.getPolyLinePath(start, endPoint);\n }\n }\n else {\n return 'M ' + start.x + ' ' + start.y + ' L ' + middle.x + ' ' + middle.y + ' L ' + endPoint.x + ' ' + endPoint.y;\n }\n };\n /**\n * Finds the curved path for funnel/pyramid data label connectors\n *\n * @returns {string} Get poly line path.\n */\n AccumulationDataLabel.prototype.getPolyLinePath = function (start, end) {\n var controlPoints = [start, end];\n if (start.y === end.y) {\n return 'M ' + start.x + ' ' + start.y + ' L ' + end.x + ' ' + end.y;\n }\n var path = 'M';\n for (var i = 0; i <= 16; i++) {\n var t = i / 16;\n var points = this.getBezierPoint(t, controlPoints, 0, 2);\n path += points.x + ',' + points.y;\n if (i !== 16) {\n path += ' L';\n }\n }\n return path;\n };\n /**\n * Finds the bezier point for funnel/pyramid data label connectors\n *\n * @returns {ChartLocation} Get bazier point.\n */\n AccumulationDataLabel.prototype.getBezierPoint = function (t, controlPoints, index, count) {\n if (count === 1) {\n return controlPoints[index];\n }\n var p0 = this.getBezierPoint(t, controlPoints, index, count - 1);\n var p1 = this.getBezierPoint(t, controlPoints, index + 1, count - 1);\n var x = (p0.x) ? p0.x : p0.x;\n var y = (p0.y) ? p0.y : p0.y;\n var x1 = (p1.x) ? p1.x : p1.x;\n var y1 = (p1.y) ? p1.y : p1.y;\n var x2 = (1 - t) * x + t * x1;\n var y2 = (1 - t) * y + t * y1;\n if (p0.x) {\n return { x: x2, y: y2 };\n }\n else {\n return { x: x2, y: y2 };\n }\n };\n /**\n * To get label edges based on the center and label rect position.\n *\n * @returns {ChartLocation} Get label edge value.\n */\n AccumulationDataLabel.prototype.getEdgeOfLabel = function (labelshape, angle, middle, border, point) {\n if (border === void 0) { border = 1; }\n var edge = new ChartLocation(labelshape.x, labelshape.y);\n if (angle >= 90 && angle <= 270) {\n edge.x += labelshape.width + border / 2;\n edge.y += labelshape.height / 2;\n middle.x = edge.x + 10;\n middle.y = edge.y;\n }\n else if (point && point.region && point.region.x > point.labelRegion.x) {\n edge.x += border * 2 + labelshape.width;\n edge.y += labelshape.height / 2;\n middle.x = edge.x + 10;\n middle.y = edge.y;\n }\n else {\n edge.x -= border / 2;\n edge.y += labelshape.height / 2;\n middle.x = edge.x - 10;\n middle.y = edge.y;\n }\n return edge;\n };\n /**\n * Finds the distance between the label position and the edge/center of the funnel/pyramid\n *\n * @returns {number} Get label distance.\n */\n AccumulationDataLabel.prototype.getLabelDistance = function (point, dataLabel) {\n if (point.labelPosition && dataLabel.position !== point.labelPosition || dataLabel.connectorStyle.length) {\n var length_1 = stringToNumber(dataLabel.connectorStyle.length || '70px', this.accumulation.initialClipRect.width);\n if (length_1 < this.accumulation.initialClipRect.width) {\n return length_1;\n }\n }\n var position = point.labelPosition || dataLabel.position;\n var series = this.accumulation.visibleSeries[0];\n var extraSpace = (this.accumulation.initialClipRect.width - series.triangleSize.width) / 2;\n var labelLocation;\n switch (position) {\n case 'Inside':\n return 0;\n case 'Outside':\n labelLocation = point.symbolLocation.x + point.labelOffset.x;\n return this.accumulation.initialClipRect.width - labelLocation - extraSpace;\n }\n };\n /**\n * Finds the label position / beginning of the connector(ouside funnel labels)\n *\n * @returns {ChartLocation} Get label location.\n */\n AccumulationDataLabel.prototype.getLabelLocation = function (point, position) {\n if (position === void 0) { position = 'Outside'; }\n if (this.accumulation.type !== 'Pie') {\n position = position === 'OutsideLeft' ? 'OutsideLeft' : point.labelPosition || position;\n var location_2 = {\n x: point.symbolLocation.x,\n y: point.symbolLocation.y - point.labelOffset.y\n };\n switch (position) {\n case 'Inside':\n location_2.y = point.region.y + point.region.height / 2;\n break;\n case 'Outside':\n location_2.x += point.labelOffset.x;\n break;\n case 'OutsideLeft':\n location_2.x -= point.labelOffset.x;\n }\n return location_2;\n }\n else {\n //return degreeToLocation(point.midAngle, this.radius, this.center);\n return degreeToLocation(point.midAngle, (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius), this.center);\n }\n };\n /**\n * Finds the beginning of connector line\n *\n * @returns {ChartLocation} Staring point of connector line.\n */\n AccumulationDataLabel.prototype.getConnectorStartPoint = function (point, connector) {\n // return this.isCircular() ? degreeToLocation(point.midAngle, this.radius - connector.width, this.center) :\n // this.getLabelLocation(point);\n var position;\n if (!this.isCircular() && point.region.x > point.labelRegion.x) {\n position = 'OutsideLeft';\n }\n return this.isCircular() ? degreeToLocation(point.midAngle, (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius) - connector.width, this.center) : this.getLabelLocation(point, position);\n };\n /**\n * To find area rect based on margin, available size.\n *\n * @private\n */\n AccumulationDataLabel.prototype.findAreaRect = function () {\n this.areaRect = new Rect(0, 0, this.accumulation.availableSize.width, this.accumulation.availableSize.height);\n var margin = this.accumulation.margin;\n subtractThickness(this.areaRect, new Thickness(margin.left, margin.right, margin.top, margin.bottom));\n };\n /**\n * To render the data labels from series points.\n */\n AccumulationDataLabel.prototype.renderDataLabel = function (point, dataLabel, parent, points, series, templateElement, redraw) {\n var id = this.accumulation.element.id + '_datalabel_Series_' + series + '_';\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: id + 'g_' + point.index });\n point.label = point.originalText || point.y.toString();\n var border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n var argsData = {\n cancel: false, name: textRender, series: this.accumulation.visibleSeries[0], point: point,\n text: point.label, border: border, color: dataLabel.fill, template: dataLabel.template, font: argsFont\n };\n this.accumulation.trigger(textRender, argsData);\n point.argsData = argsData;\n var isTemplate = argsData.template !== null;\n point.labelVisible = !argsData.cancel;\n point.text = point.label = argsData.text;\n if (Number(point.label)) {\n point.label = this.accumulation.intl.formatNumber(+point.label, {\n useGrouping: this.accumulation.useGroupingSeparator\n });\n }\n this.marginValue = argsData.border.width ? (5 + argsData.border.width) : 1;\n var childElement = createElement('div', {\n id: this.accumulation.element.id + '_Series_' + 0 + '_DataLabel_' + point.index,\n styles: 'position: absolute;background-color:' + argsData.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + argsData.border.width + 'px solid ' + argsData.border.color + ';'\n });\n this.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw);\n };\n /**\n * To calculate label size\n */\n AccumulationDataLabel.prototype.calculateLabelSize = function (isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, isReactCallback) {\n var textSize = isTemplate ? (isReactCallback ? { width: clientRect.width, height: clientRect.height } : this.getTemplateSize(childElement, point, argsData, redraw, isTemplate, points, datalabelGroup, id, dataLabel)) : measureText(point.label, dataLabel.font);\n textSize.height += 4; // 4 for calculation with padding for smart label shape\n textSize.width += 4;\n point.textSize = textSize;\n point.templateElement = childElement;\n this.getDataLabelPosition(point, dataLabel, textSize, points);\n if (point.labelRegion) {\n this.correctLabelRegion(point.labelRegion, point.textSize);\n }\n };\n /**\n * @private\n */\n AccumulationDataLabel.prototype.drawDataLabels = function (series, dataLabel, parent, templateElement, redraw) {\n var angle;\n var degree;\n var modifiedPoints = series.leftSidePoints.concat(series.rightSidePoints);\n modifiedPoints.sort(function (a, b) { return a.index - b.index; });\n if (series.type === 'Pie' && this.accumulation.enableSmartLabels) {\n this.extendedLabelsCalculation();\n }\n for (var _i = 0, modifiedPoints_1 = modifiedPoints; _i < modifiedPoints_1.length; _i++) {\n var point = modifiedPoints_1[_i];\n if (!isNullOrUndefined(point.argsData) && !isNullOrUndefined(point.y)) {\n this.finalizeDatalabels(point, modifiedPoints, dataLabel);\n var id = this.accumulation.element.id + '_datalabel_Series_' + 0 + '_';\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: id + 'g_' + point.index });\n var dataLabelElement = void 0;\n var location_3 = void 0;\n var element = void 0;\n if (point.visible && point.labelVisible) {\n angle = degree = dataLabel.angle;\n if (point.argsData.template) {\n this.setTemplateStyle(point.templateElement, point, templateElement, dataLabel.font.color, point.color, redraw);\n }\n else {\n location_3 = new ChartLocation(point.labelRegion.x + this.marginValue, point.labelRegion.y\n + (point.textSize.height * 3 / 4) + this.marginValue);\n element = getElement(id + 'shape_' + point.index);\n var startLocation = element ? new ChartLocation(+element.getAttribute('x'), +element.getAttribute('y')) : null;\n dataLabelElement = this.accumulation.renderer.drawRectangle(new RectOption(id + 'shape_' + point.index, point.argsData.color, point.argsData.border, 1, point.labelRegion, dataLabel.rx, dataLabel.ry));\n appendChildElement(false, datalabelGroup, dataLabelElement, redraw, true, 'x', 'y', startLocation, null, false, false, null, this.accumulation.duration);\n var textWidth = point.textSize.width;\n var textHeight = point.textSize.height;\n var rotate = void 0;\n if (angle !== 0 && dataLabel.enableRotation) {\n if (point.labelPosition === 'Outside') {\n degree = 0;\n }\n else {\n if (point.midAngle >= 90 && point.midAngle <= 270) {\n degree = point.midAngle + 180;\n }\n else {\n degree = point.midAngle;\n }\n }\n rotate = 'rotate(' + degree + ',' + (location_3.x + (textWidth / 2)) + ','\n + (location_3.y - (textHeight / 4)) + ')';\n }\n else {\n if (angle) {\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n }\n rotate = 'rotate(' + degree + ',' + (location_3.x + (textWidth / 2)) + ',' + (location_3.y) + ')';\n }\n point.transform = rotate;\n textElement(this.accumulation.renderer, new TextOption(id + 'text_' + point.index, location_3.x, location_3.y, 'start', point.label, rotate, 'auto', degree), point.argsData.font, point.argsData.font.color || this.getSaturatedColor(point, point.argsData.color), datalabelGroup, false, redraw, true, false, this.accumulation.duration);\n element = null;\n }\n if (this.accumulation.accumulationLegendModule && (dataLabel.position === 'Outside'\n || this.accumulation.enableSmartLabels)) {\n this.accumulation.visibleSeries[0].findMaxBounds(this.accumulation.visibleSeries[0].labelBound, point.labelRegion);\n }\n if (point.labelPosition === 'Outside') {\n var element_1 = getElement(id + 'connector_' + point.index);\n var previousDirection = element_1 ? element_1.getAttribute('d') : '';\n var pathElement = this.accumulation.renderer.drawPath(new PathOption(id + 'connector_' + point.index, 'transparent', dataLabel.connectorStyle.width, dataLabel.connectorStyle.color || point.color, 1, dataLabel.connectorStyle.dashArray, this.getConnectorPath(extend({}, point.labelRegion, null, true), point, dataLabel, point.labelAngle)));\n appendChildElement(false, datalabelGroup, pathElement, redraw, true, null, null, null, previousDirection, false, false, null, this.accumulation.duration);\n }\n appendChildElement(false, parent, datalabelGroup, redraw);\n }\n }\n }\n };\n /**\n * In this method datalabels region checked with legebdBounds and areaBounds.\n * Trimming of datalabel and point's visibility again changed here.\n *\n * @param {AccPoints} point current point in which trimming and visibility to be checked\n * @param {AccPoints[]} points finalized points\n * @param {AccumulationDataLabelSettingsModel} dataLabel datalabel model\n */\n AccumulationDataLabel.prototype.finalizeDatalabels = function (point, points, dataLabel) {\n if (this.isOverlapping(point, points) ||\n (this.titleRect && point.labelRegion && isOverlap(point.labelRegion, this.titleRect))) {\n if (this.isCircular() && point.labelPosition === 'Outside') {\n this.setPointVisibileFalse(point);\n }\n }\n if (this.accumulation.accumulationLegendModule && point.labelVisible && point.labelRegion) {\n var rect = this.accumulation.accumulationLegendModule.legendBounds;\n var padding = this.accumulation.legendSettings.border.width / 2;\n this.textTrimming(point, new Rect(rect.x - padding, rect.y - padding, rect.width + (2 * padding), rect.height + (2 * padding)), dataLabel.font, this.accumulation.accumulationLegendModule.position);\n }\n if (point.labelVisible && point.labelRegion) {\n var position = this.isCircular() ? (point.labelRegion.x >= this.center.x) ? 'InsideRight' : 'InsideLeft' :\n (point.labelRegion.x >= point.region.x) ? 'InsideRight' : 'InsideLeft';\n this.textTrimming(point, this.areaRect, dataLabel.font, position);\n }\n if (point.labelVisible && point.labelRegion && ((point.labelRegion.y + point.labelRegion.height >\n this.areaRect.y + this.areaRect.height || point.labelRegion.y < this.areaRect.y) || (point.labelRegion.x < this.areaRect.x ||\n point.labelRegion.x + point.labelRegion.width > this.areaRect.x + this.areaRect.width))) {\n this.setPointVisibileFalse(point);\n }\n };\n /**\n * To find the template element size\n *\n * @param {HTMLElement} element To get a template element.\n * @param {AccPoints} point Template of accumulation points.\n * @param {IAccTextRenderEventArgs} argsData Arguments of accumulation points.\n * @param {boolean} redraw redraw value.\n * @returns {Size} Size of a template.\n */\n AccumulationDataLabel.prototype.getTemplateSize = function (element, point, argsData, redraw, isTemplate, points, datalabelGroup, id, dataLabel) {\n element = createTemplate(element, point.index, argsData.template, this.accumulation, point, this.accumulation.visibleSeries[0], this.accumulation.element.id + '_DataLabel', 0, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw);\n var clientRect = measureElementRect(element, redraw);\n return { width: clientRect.width, height: clientRect.height };\n };\n /**\n * To set the template element style\n *\n * @param {HTMLElement} childElement Set a child element of template.\n * @param {AccPoints} point Template point.\n * @param {parent} parent Parent element of template.\n * @param {labelColor} labelColor Template label color.\n * @param {string} fill Fill color of template.\n */\n AccumulationDataLabel.prototype.setTemplateStyle = function (childElement, point, parent, labelColor, fill, redraw) {\n childElement.style.left = (point.labelRegion.x) + 'px';\n childElement.style.top = (point.labelRegion.y) + 'px';\n childElement.style.color = labelColor ||\n this.getSaturatedColor(point, fill);\n if (this.accumulation.isBlazor) {\n var position = this.isCircular() ? (point.labelRegion.x >= this.center.x) ? 'InsideRight' : 'InsideLeft' :\n (point.labelRegion.x >= point.region.x) ? 'InsideRight' : 'InsideLeft';\n if (position === 'InsideRight') {\n childElement.style.transform = 'translate(0%, -50%)';\n }\n else {\n childElement.style.transform = 'translate(-100%, -50%)';\n }\n }\n if (childElement.childElementCount) {\n appendChildElement(false, parent, childElement, redraw, true, 'left', 'top');\n this.doTemplateAnimation(this.accumulation, childElement);\n }\n };\n /**\n * To find saturated color for datalabel\n *\n * @returns {string} Get a saturated color.\n */\n AccumulationDataLabel.prototype.getSaturatedColor = function (point, color) {\n var saturatedColor;\n if (this.marginValue >= 1) {\n saturatedColor = color === 'transparent' ? this.getLabelBackground(point) : color;\n }\n else {\n saturatedColor = this.getLabelBackground(point);\n }\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n /**\n * Animates the data label template.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.doTemplateAnimation = function (accumulation, element) {\n var series = accumulation.visibleSeries[0];\n var delay = series.animation.delay + series.animation.duration;\n if (series.animation.enable && accumulation.animateSeries) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, 200, 'ZoomIn');\n }\n };\n /**\n * To find background color for the datalabel\n *\n * @returns {string} AccPoints\n */\n AccumulationDataLabel.prototype.getLabelBackground = function (point) {\n return point.labelPosition === 'Outside' ?\n this.accumulation.background || this.accumulation.themeStyle.background : point.color;\n };\n /**\n * To correct the padding between datalabel regions.\n */\n AccumulationDataLabel.prototype.correctLabelRegion = function (labelRegion, textSize, padding) {\n if (padding === void 0) { padding = 4; }\n labelRegion.height -= padding;\n labelRegion.width -= padding;\n labelRegion.x += padding / 2;\n labelRegion.y += padding / 2;\n textSize.height -= padding;\n textSize.width -= padding;\n };\n /**\n * To get the dataLabel module name\n *\n * @returns {string} module name\n */\n AccumulationDataLabel.prototype.getModuleName = function () {\n return 'AccumulationDataLabel';\n };\n /**\n * To destroy the data label.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n //calculation for placing labels smartly\n AccumulationDataLabel.prototype.extendedLabelsCalculation = function () {\n var _this = this;\n var series = this.accumulation.series[0];\n series.rightSidePoints.forEach(function (point, index, halfSidePoints) {\n point.initialLabelRegion = point.labelRegion;\n point.isLabelUpdated = 0;\n _this.skipPoints(point, halfSidePoints, index);\n });\n series.leftSidePoints.forEach(function (point, index, halfSidePoints) {\n point.initialLabelRegion = point.labelRegion;\n point.isLabelUpdated = 0;\n _this.skipPoints(point, halfSidePoints, index);\n });\n this.arrangeLeftSidePoints(series);\n this.isIncreaseAngle = false;\n this.arrangeRightSidePoints(series);\n };\n /**\n * Rightside points alignments calculation\n *\n * @param {AccumulationSeries} series To get a proper series.\n */\n AccumulationDataLabel.prototype.arrangeRightSidePoints = function (series) {\n var startFresh;\n var angleChanged;\n var rightSideRenderPoints = series.rightSidePoints.filter(function (point) { return (point.labelVisible && point.labelPosition === 'Outside'); });\n this.rightSideRenderingPoints = rightSideRenderPoints;\n var checkAngle;\n var currentPoint;\n var lastPoint = rightSideRenderPoints[rightSideRenderPoints.length - 1];\n var nextPoint;\n if (lastPoint) {\n if (lastPoint.labelAngle > 90 && lastPoint.labelAngle < 270) {\n this.isIncreaseAngle = true;\n this.changeLabelAngle(lastPoint, 89);\n }\n }\n /**\n * Right side points arranged from last point.\n * A point checked with successive points for overlapping.\n * If that is overlapped, its label angle is decreased and placing in optimal position\n * If one point's angle is decreased, its previous points in the half side points also decreased until it reaced optimum position.\n * When decreasing angle falls beyond 270, label angle increased.\n * If one point's angle is increased, its successive points in that half point also increased until it reaced optimum position.\n */\n for (var i = rightSideRenderPoints.length - 1; i >= 0; i--) {\n currentPoint = rightSideRenderPoints[i];\n nextPoint = rightSideRenderPoints[i + 1];\n // A point checked for overlapping, label visibility\n if (this.isOverlapWithNext(currentPoint, rightSideRenderPoints, i) && currentPoint.labelVisible\n || !(currentPoint.labelAngle <= 90 || currentPoint.labelAngle >= 270)) {\n checkAngle = lastPoint.labelAngle + 10;\n angleChanged = true;\n //If last's point change angle in beyond the limit, stop the increasing angle and do decrease the angle.\n if (startFresh) {\n this.isIncreaseAngle = false;\n }\n else if (checkAngle > 90 && checkAngle < 270 && nextPoint.isLabelUpdated) {\n this.isIncreaseAngle = true;\n }\n if (!this.isIncreaseAngle) {\n for (var k = i + 1; k < rightSideRenderPoints.length; k++) {\n this.increaseAngle(rightSideRenderPoints[k - 1], rightSideRenderPoints[k], series, true);\n }\n }\n else {\n for (var k = i + 1; k > 0; k--) {\n this.decreaseAngle(rightSideRenderPoints[k], rightSideRenderPoints[k - 1], series, true);\n }\n }\n }\n else {\n //If a point did not overlapped with previous points, increase the angle always for right side points.\n if (angleChanged && nextPoint && !nextPoint.isLabelUpdated) {\n startFresh = true;\n }\n }\n }\n };\n /**\n * Leftside points alignments calculation\n *\n * @param {AccumulationSeries} series To get a proper series.\n */\n AccumulationDataLabel.prototype.arrangeLeftSidePoints = function (series) {\n var _this = this;\n var leftSideRenderPoints = series.leftSidePoints.filter(function (point) { return (point.labelVisible && point.labelPosition === 'Outside'); });\n this.leftSideRenderingPoints = leftSideRenderPoints;\n var previousPoint;\n var currentPoint;\n var angleChanged;\n var startFresh;\n /**\n * Left side points arranged from first point.\n * A point checked with previous points for overlapping.\n * If that is overlapped, its label angle is decreased and placing in optimal position\n * If one point's angle is decreased, its previous points in the half side points also decreased until it reaced optimum position.\n * When decreasing angle falls beyond 90, label angle increased.\n * If one point's angle is increased, its successive points in that half point also increased until it reaced optimum position.\n */\n for (var i = 0; i < leftSideRenderPoints.length; i++) {\n currentPoint = leftSideRenderPoints[i];\n previousPoint = leftSideRenderPoints[i - 1];\n // A point checked\n if (this.isOverlapWithPrevious(currentPoint, leftSideRenderPoints, i) && currentPoint.labelVisible\n || !(currentPoint.labelAngle < 270)) {\n angleChanged = true;\n if (startFresh) {\n this.isIncreaseAngle = false;\n }\n if (!this.isIncreaseAngle) {\n for (var k = i; k > 0; k--) {\n this.decreaseAngle(leftSideRenderPoints[k], leftSideRenderPoints[k - 1], series, false);\n leftSideRenderPoints.filter(function (point, index) {\n if (point.isLabelUpdated && leftSideRenderPoints[index].labelAngle - 10 < 100) {\n _this.isIncreaseAngle = true;\n }\n });\n }\n }\n else {\n for (var k = i; k < leftSideRenderPoints.length; k++) {\n this.increaseAngle(leftSideRenderPoints[k - 1], leftSideRenderPoints[k], series, false);\n }\n }\n }\n else {\n if (angleChanged && previousPoint && previousPoint.isLabelUpdated) {\n startFresh = true;\n }\n }\n }\n };\n AccumulationDataLabel.prototype.decreaseAngle = function (currentPoint, previousPoint, series, isRightSide) {\n if (isNullOrUndefined(currentPoint) || isNullOrUndefined(previousPoint)) {\n return null;\n }\n var count = 1;\n if (isRightSide) {\n while (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) || (!this.isVariousRadius() &&\n !((previousPoint.labelRegion.height + previousPoint.labelRegion.y) < currentPoint.labelRegion.y))) {\n var newAngle = previousPoint.midAngle - count;\n if (newAngle < 0) {\n newAngle = 360 + newAngle;\n }\n if (newAngle <= 270 && newAngle >= 90) {\n newAngle = 270;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(previousPoint, newAngle);\n count++;\n }\n }\n else {\n if (currentPoint.labelAngle > 270) {\n this.changeLabelAngle(currentPoint, 270);\n previousPoint.labelAngle = 270;\n }\n while (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) || (!this.isVariousRadius() &&\n ((currentPoint.labelRegion.y + currentPoint.labelRegion.height) > previousPoint.labelRegion.y))) {\n var newAngle = previousPoint.midAngle - count;\n if (!(newAngle <= 270 && newAngle >= 90)) {\n newAngle = 90;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(previousPoint, newAngle);\n if (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) &&\n !series.leftSidePoints.indexOf(previousPoint) && (newAngle - 1 < 90 && newAngle - 1 > 270)) {\n this.changeLabelAngle(currentPoint, currentPoint.labelAngle + 1);\n this.arrangeLeftSidePoints(series);\n break;\n }\n count++;\n }\n }\n };\n AccumulationDataLabel.prototype.increaseAngle = function (currentPoint, nextPoint, series, isRightSide) {\n if (isNullOrUndefined(currentPoint) || isNullOrUndefined(nextPoint)) {\n return null;\n }\n var count = 1;\n if (isRightSide) {\n while (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) || (!this.isVariousRadius() &&\n !((currentPoint.labelRegion.y + currentPoint.labelRegion.height) < nextPoint.labelRegion.y))) {\n var newAngle = nextPoint.midAngle + count;\n if (newAngle < 270 && newAngle > 90) {\n newAngle = 90;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(nextPoint, newAngle);\n if (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) && (newAngle + 1 > 90 && newAngle + 1 < 270) &&\n this.rightSideRenderingPoints.indexOf(nextPoint) === this.rightSideRenderingPoints.length - 1) {\n this.changeLabelAngle(currentPoint, currentPoint.labelAngle - 1);\n nextPoint.labelRegion = nextPoint.initialLabelRegion;\n this.arrangeRightSidePoints(series);\n break;\n }\n count++;\n }\n }\n else {\n while (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) || (!this.isVariousRadius() &&\n (currentPoint.labelRegion.y < (nextPoint.labelRegion.y + nextPoint.labelRegion.height)))) {\n var newAngle = nextPoint.midAngle + count;\n if (!(newAngle < 270 && newAngle > 90)) {\n newAngle = 270;\n this.isIncreaseAngle = false;\n break;\n }\n this.changeLabelAngle(nextPoint, newAngle);\n count++;\n }\n }\n };\n AccumulationDataLabel.prototype.changeLabelAngle = function (currentPoint, newAngle) {\n var dataLabel = this.accumulation.series[0].dataLabel;\n var variableR;\n if (this.isVariousRadius()) {\n variableR = this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], currentPoint);\n }\n //padding 10px is added to label radius for increasing the angle and avoid congestion.\n var labelRadius = (currentPoint.labelPosition === 'Outside' && this.accumulation.enableSmartLabels &&\n dataLabel.position === 'Inside') ?\n this.radius + stringToNumber(dataLabel.connectorStyle.length || '4%', this.accumulation.pieSeriesModule.size / 2) :\n (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius + 10 : variableR);\n var radius = (!this.isVariousRadius() ? labelRadius : variableR);\n this.getLabelRegion(currentPoint, 'Outside', currentPoint.textSize, radius, this.marginValue, newAngle);\n currentPoint.isLabelUpdated = 1;\n currentPoint.labelAngle = newAngle;\n };\n AccumulationDataLabel.prototype.isOverlapWithPrevious = function (currentPoint, points, currentPointIndex) {\n for (var i = 0; i < currentPointIndex; i++) {\n if (i !== points.indexOf(currentPoint) &&\n points[i].visible && points[i].labelVisible && points[i].labelRegion && currentPoint.labelRegion &&\n currentPoint.labelVisible && isOverlap(currentPoint.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n AccumulationDataLabel.prototype.isOverlapWithNext = function (point, points, pointIndex) {\n for (var i = pointIndex; i < points.length; i++) {\n if (i !== points.indexOf(point) && points[i].visible && points[i].labelVisible && points[i].labelRegion &&\n point.labelRegion && point.labelVisible && isOverlap(point.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n AccumulationDataLabel.prototype.skipPoints = function (currentPoint, halfsidePoints, pointIndex) {\n if (pointIndex > 0 && ((currentPoint.midAngle < 285 && currentPoint.midAngle > 255) ||\n (currentPoint.midAngle < 105 && currentPoint.midAngle > 75))) {\n var previousPoint = halfsidePoints[pointIndex - 1];\n var angleDiff = currentPoint.endAngle % 360 - currentPoint.startAngle % 360;\n var prevAngleDiff = previousPoint.endAngle % 360 - previousPoint.startAngle % 360;\n if (prevAngleDiff <= angleDiff && angleDiff < 5 && previousPoint.labelVisible) {\n this.setPointVisibleTrue(currentPoint);\n }\n }\n else if (pointIndex > 1 && ((currentPoint.midAngle < 300 && currentPoint.midAngle > 240) ||\n (currentPoint.midAngle < 120 && currentPoint.midAngle > 60))) {\n var prevPoint = halfsidePoints[pointIndex - 1];\n var secondPrevPoint = halfsidePoints[pointIndex - 2];\n var angleDiff = currentPoint.endAngle % 360 - currentPoint.startAngle % 360;\n var prevAngleDiff = prevPoint.endAngle % 360 - prevPoint.startAngle % 360;\n var thirdAngleDiff = secondPrevPoint.endAngle % 360 - secondPrevPoint.startAngle % 360;\n if (angleDiff < 3 && prevAngleDiff < 3 && thirdAngleDiff < 3 && prevPoint.labelVisible && currentPoint.labelVisible) {\n this.setPointVisibleTrue(currentPoint);\n }\n }\n };\n AccumulationDataLabel.prototype.getPerpendicularDistance = function (startPoint, point) {\n var increasedLocation;\n var add = 10;\n var height = add + 10 * Math.sin(point.midAngle * Math.PI / 360);\n if (point.midAngle > 270 && point.midAngle < 360) {\n increasedLocation = new ChartLocation(startPoint.x + height * (Math.cos((360 - point.midAngle) * Math.PI / 180)), startPoint.y - height * (Math.sin((360 - point.midAngle) * Math.PI / 180)));\n }\n else if (point.midAngle > 0 && point.midAngle < 90) {\n increasedLocation = new ChartLocation(startPoint.x + height * (Math.cos((point.midAngle) * Math.PI / 180)), startPoint.y + height * (Math.sin((point.midAngle) * Math.PI / 180)));\n }\n else if (point.midAngle > 0 && point.midAngle < 90) {\n increasedLocation = new ChartLocation(startPoint.x - height * (Math.cos((point.midAngle - 90) * Math.PI / 180)), startPoint.y + height * (Math.sin((point.midAngle - 90) * Math.PI / 180)));\n }\n else {\n increasedLocation = new ChartLocation(startPoint.x - height * (Math.cos((point.midAngle - 180) * Math.PI / 180)), startPoint.y - height * (Math.sin((point.midAngle - 180) * Math.PI / 180)));\n }\n return increasedLocation;\n };\n return AccumulationDataLabel;\n}(AccumulationBase));\nexport { AccumulationDataLabel };\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Chart.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Chart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Chart.vue?vue&type=template&id=116f5cab&\"\nimport script from \"./Chart.vue?vue&type=script&lang=js&\"\nexport * from \"./Chart.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Chart.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticList.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StatisticList.vue?vue&type=template&id=c141b1d8&\"\nimport script from \"./StatisticList.vue?vue&type=script&lang=js&\"\nexport * from \"./StatisticList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StatisticList.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InsuranceLines.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticStyle:{\"padding\":\"10px\",\"position\":\"absolute\"},attrs:{\"id\":\"dialog\"}},[_c('insurance-lines-form',{attrs:{\"showing\":_vm.dlgShow,\"formAction\":_vm.formAction,\"isMobile\":_vm.isMobile,\"formData\":_vm.rowData},on:{\"formClosed\":_vm.hideForm}})],1),_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"load\":_vm.onGridLoad,\"toolbarClick\":_vm.toolbar_click,\"actionBegin\":_vm.onActionBegin,\"actionComplete\":_vm.onActionComplete,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.gridData,\"query\":_vm.query,\"allowSorting\":true,\"allowSelection\":true,\"allowExcelExport\":true,\"selectionSettings\":_vm.selectionSettings,\"allowFiltering\":true,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"editSettings\":_vm.editSettings,\"filterSettings\":_vm.filterSettings,\"queryCellInfo\":_vm.setStyle,\"locale\":\"es-CO\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id Karin\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"Clip\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"localCode\",\"headerText\":\"Código Core\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\",\"isPrimaryKey\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Ramo\",\"filter\":\"Menu\",\"width\":200,\"clipMode\":\"EllipsisWithTooltip\",\"required\":true}}),_c('e-column',{attrs:{\"field\":\"macroLineId\",\"headerText\":\"Id Macro Ramo\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\",\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"macroLineName\",\"headerText\":\"Macro Ramo\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"isActive\",\"headerText\":\"isActive\",\"width\":90,\"required\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"active\",\"headerText\":\"Activo\",\"width\":90,\"filter\":\"CheckBox\",\"required\":true,\"visible\":\"true\"}}),_c('e-column',{attrs:{\"field\":\"isInspection\",\"headerText\":\"isInspection\",\"width\":90,\"required\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"inspection\",\"headerText\":\"Req. Inspección\",\"width\":90,\"filter\":\"CheckBox\",\"required\":true,\"visible\":\"true\"}}),_c('e-column',{attrs:{\"field\":\"isLicensePlate\",\"headerText\":\"isLicensePlate\",\"width\":90,\"required\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"licensePlate\",\"headerText\":\"Req. Placa\",\"width\":90,\"filter\":\"CheckBox\",\"required\":true,\"visible\":\"true\"}}),_c('e-column',{attrs:{\"headerText\":\"Acciones\",\"AllowFiltering\":\"false\",\"width\":100,\"commands\":_vm.commands}})],1)],1)],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Ramos\")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"insurance-lines-form\",\"isModal\":true,\"visible\":_vm.showing,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"z-index\":\"1003\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"e-text\",class:{ 'e-warning': _vm.hasError('id') }},[_vm._v(\"Id Karin\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.id),expression:\"m_data.id\"}],staticClass:\"e-input\",attrs:{\"id\":\"id\",\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":(_vm.m_data.id)},on:{\"blur\":function($event){return _vm.validateField('id')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"id\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Código Core\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.localCode),expression:\"m_data.localCode\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('localCode') },attrs:{\"id\":\"localCode\",\"name\":\"localCode\",\"type\":\"text\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Código Core\"},domProps:{\"value\":(_vm.m_data.localCode)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"localCode\", $event.target.value)},function($event){return _vm.validateField('localCode')}],\"blur\":function($event){return _vm.validateField('localCode')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('localCode') },domProps:{\"textContent\":_vm._s(_vm.m_errors.localCode)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"macroInsuranceLineId\"}},[_vm._v(\"Macro Ramo\")]),_c('ejs-dropdownlist',{ref:\"macroDropDown\",attrs:{\"id\":\"macroInsuranceLineId\",\"dataSource\":_vm.macroLinesList,\"fields\":_vm.fields,\"value\":_vm.m_data.macroInsuranceLineId,\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Macro Ramo\",\"cssClass\":_vm.hasError('macroInsuranceLineId') ? 'e-warning' : ''},on:{\"change\":function($event){return _vm.validateField('macroInsuranceLineId')},\"blur\":function($event){return _vm.validateField('macroInsuranceLineId')}},model:{value:(_vm.m_data.macroInsuranceLineId),callback:function ($$v) {_vm.$set(_vm.m_data, \"macroInsuranceLineId\", $$v)},expression:\"m_data.macroInsuranceLineId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('macroInsuranceLineId') },domProps:{\"textContent\":_vm._s(_vm.m_errors.macroInsuranceLineId)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Nombre Ramo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.name),expression:\"m_data.name\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('name') },attrs:{\"id\":\"name\",\"type\":\"text\",\"required\":\"\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Ramo\"},domProps:{\"value\":(_vm.m_data.name)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"name\", $event.target.value)},function($event){return _vm.validateField('name')}],\"blur\":function($event){return _vm.validateField('name')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('name') },domProps:{\"textContent\":_vm._s(_vm.m_errors.name)}})])]),_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-4 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isActive\",\"checked\":_vm.m_data.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_data.isActive),callback:function ($$v) {_vm.$set(_vm.m_data, \"isActive\", $$v)},expression:\"m_data.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isActive\"}},[_vm._v(_vm._s(_vm.m_data.isActive ? \"Activo\" : \"Inactivo\"))])],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-4 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isInspection\",\"checked\":_vm.m_data.isInspection,\"disabled\":_vm.isFormReadOnly},model:{value:(_vm.m_data.isInspection),callback:function ($$v) {_vm.$set(_vm.m_data, \"isInspection\", $$v)},expression:\"m_data.isInspection\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isInspection\"}},[_vm._v(_vm._s(_vm.m_data.isInspection ? \"Requiere Inspección\" : \"No Requiere Inspección\"))])],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-4 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isLicensePlate\",\"checked\":_vm.m_data.isLicensePlate,\"disabled\":_vm.isFormReadOnly},model:{value:(_vm.m_data.isLicensePlate),callback:function ($$v) {_vm.$set(_vm.m_data, \"isLicensePlate\", $$v)},expression:\"m_data.isLicensePlate\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isLicensePlate\"}},[_vm._v(_vm._s(_vm.m_data.isLicensePlate ? \"Requiere Placa\" : \"No Requiere Placa\"))])],1)])]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),(_vm.showDeleteButton)?_c('ejs-button',{attrs:{\"isDanger\":true,\"iconCss\":\"e-icons icon-trash inline-command\",\"cssClass\":\"e-flat e-danger e-noback\"},nativeOn:{\"click\":function($event){return _vm.validateDelete($event)}}},[_vm._v(\"Desactivar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InsuranceLinesForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InsuranceLinesForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InsuranceLinesForm.vue?vue&type=template&id=3bad30e5&\"\nimport script from \"./InsuranceLinesForm.vue?vue&type=script&lang=js&\"\nexport * from \"./InsuranceLinesForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InsuranceLinesForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InsuranceLines.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InsuranceLines.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InsuranceLines.vue?vue&type=template&id=822690d2&\"\nimport script from \"./InsuranceLines.vue?vue&type=script&lang=js&\"\nexport * from \"./InsuranceLines.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InsuranceLines.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"container-fluid\"},[_vm._m(0),_c('report-filters',{attrs:{\"reportType\":_vm.reportType,\"reportColumns\":_vm.reportColumns,\"reportName\":_vm.reportName}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Reporte Detallado de Requerimientos por Analista\")])])])}]\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForAnalyst.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForAnalyst.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RequestForAnalyst.vue?vue&type=template&id=5979af09&\"\nimport script from \"./RequestForAnalyst.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestForAnalyst.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestForAnalyst.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"container-fluid\"},[_vm._m(0),_c('report-filters',{attrs:{\"reportType\":_vm.reportType,\"reportColumns\":_vm.reportColumns,\"reportName\":_vm.reportName}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Reporte Detallado de Datos a Nivel Comercial\")])])])}]\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForBroker.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForBroker.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RequestForBroker.vue?vue&type=template&id=c2d86d3a&\"\nimport script from \"./RequestForBroker.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestForBroker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestForBroker.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPerson.vue?vue&type=style&index=0&lang=css&\"","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n, isBlazor } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlur, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlur);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n ;\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n var id = item.getAttribute('data-uid');\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange && isBlazor())) || (this.parent.isDynamicDataChange &&\n !isNullOrUndefined(this.parent.value) && this.parent.value.length <= 1 && isBlazor())) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n var isBlazorListbox = isBlazor() && (args.module && args.module === 'listbox');\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : (isBlazorListbox ? frameElm : args.li.querySelector('.e-checkbox-wrapper').childNodes[1])\n : (isBlazorListbox ? frameElm : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]);\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? (isBlazorListbox ?\n checkboxWrapper.querySelector('.e-frame') : checkboxWrapper.childNodes[1]) : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.parent.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.KeyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n ;\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlur = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) &&\n !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlur(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.filterInput);\n }\n if (!this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlur();\n }\n else {\n this.parent.onBlur(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check' && this.checkAllParent.getAttribute('aria-checked') !== 'true') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n var compiledString = void 0;\n this.selectAllSpan.textContent = '';\n compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n var removeEle = this.parent.createElement('div');\n if (activeLiCount > 0) {\n append(this.parent.ulElement.querySelectorAll('li.e-active'), ulEle);\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"persons-form\",\"isModal\":true,\"visible\":_vm.showing,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"z-index\":\"1005\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"e-text\",class:{ 'e-warning': _vm.hasError('id') }},[_vm._v(\"Id Karin\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.id),expression:\"m_data.id\"}],staticClass:\"e-input\",attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":(_vm.m_data.id)},on:{\"blur\":function($event){return _vm.validateField('id')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"id\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-3 col-md-3\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasError('personType')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Tipo de Persona\")]),_c('ejs-dropdownlist',{ref:\"personDropDown\",attrs:{\"dataSource\":_vm.personTypesList,\"fields\":_vm.fields,\"readonly\":_vm.isFormReadOnly || !_vm.isCreate,\"disabled\":!_vm.isCreate,\"placeholder\":\"Tipo de Persona\"},on:{\"change\":function($event){return _vm.validateField('personType')},\"blur\":function($event){return _vm.validatePerson('personType')}},model:{value:(_vm.m_data.personType),callback:function ($$v) {_vm.$set(_vm.m_data, \"personType\", $$v)},expression:\"m_data.personType\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('personType') },domProps:{\"textContent\":_vm._s(_vm.m_errors.personType)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-3 col-md-3\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasError('documentType')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Tipo de Documento\")]),_c('ejs-dropdownlist',{ref:\"typeDropDown\",attrs:{\"dataSource\":_vm.documentTypeList,\"fields\":_vm.fields,\"placeholder\":\"Tipo de Documento\",\"readonly\":_vm.isFormReadOnly || !_vm.isCreate,\"disabled\":!_vm.isCreate},on:{\"change\":function($event){return _vm.validateField('documentType')},\"blur\":function($event){return _vm.validatePerson('documentNumber')}},model:{value:(_vm.m_data.documentType),callback:function ($$v) {_vm.$set(_vm.m_data, \"documentType\", $$v)},expression:\"m_data.documentType\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('documentType') },domProps:{\"textContent\":_vm._s(_vm.m_errors.documentType)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Documento de Identidad\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.documentNumber),expression:\"m_data.documentNumber\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('documentNumber') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Documento de Identidad\",\"readonly\":_vm.isFormReadOnly,\"disabled\":!_vm.isCreate},domProps:{\"value\":(_vm.m_data.documentNumber)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"documentNumber\", $event.target.value)},function($event){return _vm.validateField('documentNumber')}],\"blur\":function($event){return _vm.validatePerson('documentNumber')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('documentNumber') },domProps:{\"textContent\":_vm._s(_vm.m_errors.documentNumber)}})])]),_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isNatural),expression:\"isNatural\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Primer Nombre\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.givenName),expression:\"m_data.givenName\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('givenName') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Primer Nombre\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.givenName)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"givenName\", $event.target.value)},function($event){return _vm.validateField('givenName')}],\"blur\":function($event){return _vm.validateField('givenName')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('givenName') },domProps:{\"textContent\":_vm._s(_vm.m_errors.givenName)}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isNatural),expression:\"isNatural\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Segundo Nombre\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.otherGivenNames),expression:\"m_data.otherGivenNames\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('otherGivenNames') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Segundo Nombre\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.otherGivenNames)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"otherGivenNames\", $event.target.value)},function($event){return _vm.validateField('otherGivenNames')}],\"blur\":function($event){return _vm.validateField('otherGivenNames')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('otherGivenNames') },domProps:{\"textContent\":_vm._s(_vm.m_errors.otherGivenNames)}})])]),_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isNatural),expression:\"isNatural\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Primer Apellido\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.familyName),expression:\"m_data.familyName\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('familyName') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Primer Apellido\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.familyName)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"familyName\", $event.target.value)},function($event){return _vm.validateField('familyName')}],\"blur\":function($event){return _vm.validateField('familyName')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('familyName') },domProps:{\"textContent\":_vm._s(_vm.m_errors.familyName)}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isNatural),expression:\"isNatural\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Segundo Apellido\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.otherFamilyNames),expression:\"m_data.otherFamilyNames\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('otherFamilyNames') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Segundo Apellido\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.otherFamilyNames)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"otherFamilyNames\", $event.target.value)},function($event){return _vm.validateField('otherFamilyNames')}],\"blur\":function($event){return _vm.validateField('otherFamilyNames')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('otherFamilyNames') },domProps:{\"textContent\":_vm._s(_vm.m_errors.otherFamilyNames)}})])]),_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isNatural),expression:\"!isNatural\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Nombre Empresa\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.businessName),expression:\"m_data.businessName\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('businessName') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Nombre Empresa\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.businessName)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"businessName\", $event.target.value)},function($event){return _vm.validateField('businessName')}],\"blur\":function($event){return _vm.validateField('businessName')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('businessName') },domProps:{\"textContent\":_vm._s(_vm.m_errors.businessName)}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Correo Electrónico\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.email),expression:\"m_data.email\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('email') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Correo Electrónico\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.email)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"email\", $event.target.value)},function($event){return _vm.validateField('email')}],\"blur\":function($event){return _vm.validateField('email')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('email') },domProps:{\"textContent\":_vm._s(_vm.m_errors.email)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Teléfono\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.phoneNumber),expression:\"m_data.phoneNumber\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('phoneNumber') },attrs:{\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Teléfono\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_data.phoneNumber)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"phoneNumber\", $event.target.value)},function($event){return _vm.validateField('phoneNumber')}],\"blur\":function($event){return _vm.validateField('phoneNumber')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('phoneNumber') },domProps:{\"textContent\":_vm._s(_vm.m_errors.phoneNumber)}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isClient && _vm.showId),expression:\"isClient && showId\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"checked\":_vm.m_clientData.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_clientData.isActive),callback:function ($$v) {_vm.$set(_vm.m_clientData, \"isActive\", $$v)},expression:\"m_clientData.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\"},[_vm._v(_vm._s(_vm.m_clientData.isActive ? \"Activo\" : \"Inactivo\"))])],1)])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAgent),expression:\"isAgent\"}]},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasErrorAgent('agentType')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Tipo de Agente\")]),_c('ejs-dropdownlist',{ref:\"agentDropDown\",attrs:{\"dataSource\":_vm.agentTypeList,\"fields\":_vm.fields,\"placeholder\":\"Tipo de Agente\",\"readonly\":_vm.isFormReadOnly},on:{\"change\":function($event){return _vm.validateFieldAgent('agentType')},\"blur\":function($event){return _vm.validateFieldAgent('agentType')}},model:{value:(_vm.m_agentData.agentType),callback:function ($$v) {_vm.$set(_vm.m_agentData, \"agentType\", $$v)},expression:\"m_agentData.agentType\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorAgent('agentType') },domProps:{\"textContent\":_vm._s(_vm.m_errors_agent.agentType)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Código Core\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_agentData.localCode),expression:\"m_agentData.localCode\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasErrorAgent('localCode') },attrs:{\"name\":\"agentlocalCode\",\"type\":\"text\",\"placeholder\":\"Código Core\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_agentData.localCode)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_agentData, \"localCode\", $event.target.value)},function($event){return _vm.validateFieldAgent('localCode')}],\"blur\":function($event){return _vm.validateFieldAgent('localCode')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorAgent('localCode') },domProps:{\"textContent\":_vm._s(_vm.m_errors_agent.localCode)}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasErrorAgent('brokerId')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Comercial\")]),_c('ejs-dropdownlist',{ref:\"brokerDropDown\",attrs:{\"dataSource\":_vm.brokersList,\"fields\":_vm.fields,\"placeholder\":\"Comercial\",\"readonly\":_vm.isFormReadOnly},on:{\"change\":function($event){return _vm.validateFieldAgent('brokerId')},\"blur\":function($event){return _vm.validateFieldAgent('brokerId')}},model:{value:(_vm.m_agentData.brokerId),callback:function ($$v) {_vm.$set(_vm.m_agentData, \"brokerId\", $$v)},expression:\"m_agentData.brokerId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorAgent('brokerId') },domProps:{\"textContent\":_vm._s(_vm.m_errors_agent.brokerId)}})],1)])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"checked\":_vm.m_agentData.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_agentData.isActive),callback:function ($$v) {_vm.$set(_vm.m_agentData, \"isActive\", $$v)},expression:\"m_agentData.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\"},[_vm._v(_vm._s(_vm.m_agentData.isActive ? \"Activo\" : \"Inactivo\"))])],1)])]),_c('div',{staticClass:\"row\"}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('label',[_vm._v(\"Exclusividad con:\")]),_c('ejs-grid',{ref:\"gridExclusivitiesRef\",staticClass:\"r-space\",attrs:{\"dataSource\":_vm.gridClients,\"allowPaging\":true,\"pageSettings\":_vm.pageSettings,\"locale\":\"es-CO\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"personName\",\"headerText\":\"Cliente\",\"width\":200,\"minWidth\":200,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"lines\",\"headerText\":\"Ramos Asociados\",\"width\":300,\"minWidth\":300,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"dueDate\",\"headerText\":\"Fecha Negocio\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"createdDate\",\"headerText\":\"Fecha Creacion\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\"}})],1)],1)],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isBroker),expression:\"isBroker\"}]},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Código Core\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_brokerData.localCode),expression:\"m_brokerData.localCode\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasErrorBroker('localCode') },attrs:{\"name\":\"brokerlocalCode\",\"type\":\"text\",\"placeholder\":\"Código Core\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_brokerData.localCode)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_brokerData, \"localCode\", $event.target.value)},function($event){return _vm.validateFieldBroker('localCode')}],\"blur\":function($event){return _vm.validateFieldBroker('localCode')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorBroker('localCode') },domProps:{\"textContent\":_vm._s(_vm.m_errors_broker.localCode)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasErrorBroker('branchOfficeId')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Sucursal\")]),_c('ejs-dropdownlist',{ref:\"branchDropDown\",attrs:{\"dataSource\":_vm.branchOfficesList,\"fields\":_vm.fields,\"placeholder\":\"Sucursal\",\"readonly\":_vm.isFormReadOnly},on:{\"change\":function($event){return _vm.validateFieldBroker('branchOfficeId')},\"blur\":function($event){return _vm.validateFieldBroker('branchOfficeId')}},model:{value:(_vm.m_brokerData.branchOfficeId),callback:function ($$v) {_vm.$set(_vm.m_brokerData, \"branchOfficeId\", $$v)},expression:\"m_brokerData.branchOfficeId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorBroker('branchOfficeId') },domProps:{\"textContent\":_vm._s(_vm.m_errors_broker.branchOfficeId)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasErrorBroker('userId')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Usuario\")]),_c('ejs-dropdownlist',{ref:\"userDropDown\",attrs:{\"dataSource\":_vm.usersList,\"fields\":_vm.fields,\"placeholder\":\"Usuario\",\"readonly\":_vm.isFormReadOnly},on:{\"change\":function($event){return _vm.validateFieldUser('userId')},\"blur\":function($event){return _vm.validateFieldUser('userId')}},model:{value:(_vm.m_userData.userId),callback:function ($$v) {_vm.$set(_vm.m_userData, \"userId\", $$v)},expression:\"m_userData.userId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorUser('userId') },domProps:{\"textContent\":_vm._s(_vm.m_errors_user.userId)}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6 control-section switch-control classEspecial\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"checked\":_vm.m_brokerData.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_brokerData.isActive),callback:function ($$v) {_vm.$set(_vm.m_brokerData, \"isActive\", $$v)},expression:\"m_brokerData.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\"},[_vm._v(_vm._s(_vm.m_brokerData.isActive ? \"Activo\" : \"Inactivo\"))])],1)])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isThird),expression:\"isThird\"}]},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Código Core\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_thirdData.localCode),expression:\"m_thirdData.localCode\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasErrorThird('localCode') },attrs:{\"name\":\"thirdlocalCode\",\"type\":\"text\",\"placeholder\":\"Código Core\",\"readonly\":_vm.isFormReadOnly},domProps:{\"value\":(_vm.m_thirdData.localCode)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_thirdData, \"localCode\", $event.target.value)},function($event){return _vm.validateFieldThird('localCode')}],\"blur\":function($event){return _vm.validateFieldThird('localCode')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorThird('localCode') },domProps:{\"textContent\":_vm._s(_vm.m_errors_third.localCode)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{class:{\n 'e-text': true,\n 'e-warning': _vm.hasErrorThird('thirdPartyType')\n },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Tipo de Tercero\")]),_c('ejs-dropdownlist',{ref:\"thirdDropDown\",attrs:{\"dataSource\":_vm.thirdPartyTypeList,\"fields\":_vm.fields,\"placeholder\":\"Tipo de Tercero\",\"readonly\":_vm.isFormReadOnly},on:{\"change\":function($event){return _vm.validateFieldThird('thirdPartyType')},\"blur\":function($event){return _vm.validateFieldThird('thirdPartyType')}},model:{value:(_vm.m_thirdData.thirdPartyType),callback:function ($$v) {_vm.$set(_vm.m_thirdData, \"thirdPartyType\", $$v)},expression:\"m_thirdData.thirdPartyType\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasErrorThird('thirdPartyType') },domProps:{\"textContent\":_vm._s(_vm.m_errors_third.thirdPartyType)}})],1)])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6 control-section switch-control classEspecial\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"checked\":_vm.m_thirdData.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_thirdData.isActive),callback:function ($$v) {_vm.$set(_vm.m_thirdData, \"isActive\", $$v)},expression:\"m_thirdData.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\"},[_vm._v(_vm._s(_vm.m_thirdData.isActive ? \"Activo\" : \"Inactivo\"))])],1)])])]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),(_vm.showDeleteButton)?_c('ejs-button',{attrs:{\"isDanger\":true,\"iconCss\":\"e-icons icon-trash inline-command\",\"cssClass\":\"e-flat e-danger e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateDelete($event)}}},[_vm._v(\"Desactivar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonsForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonsForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PersonsForm.vue?vue&type=template&id=692d90a2&\"\nimport script from \"./PersonsForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonsForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PersonsForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonsForm.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MacroLines.vue?vue&type=style&index=0&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&lang=css&\"","//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\n// v4 adds AMD/UMD, commonJS, and plain browser support\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\n// https://github.com/rndme/download\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.download = factory();\n }\n}(this, function () {\n\n\treturn function download(data, strFileName, strMimeType) {\n\n\t\tvar self = window, // this script is only for browsers anyway...\n\t\t\tdefaultMime = \"application/octet-stream\", // this default mime also triggers iframe downloads\n\t\t\tmimeType = strMimeType || defaultMime,\n\t\t\tpayload = data,\n\t\t\turl = !strFileName && !strMimeType && payload,\n\t\t\tanchor = document.createElement(\"a\"),\n\t\t\ttoString = function(a){return String(a);},\n\t\t\tmyBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),\n\t\t\tfileName = strFileName || \"download\",\n\t\t\tblob,\n\t\t\treader;\n\t\t\tmyBlob= myBlob.call ? myBlob.bind(self) : Blob ;\n\t \n\t\tif(String(this)===\"true\"){ //reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\n\t\t\tpayload=[payload, mimeType];\n\t\t\tmimeType=payload[0];\n\t\t\tpayload=payload[1];\n\t\t}\n\n\n\t\tif(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\n\t\t\tanchor.href = url; // assign href prop to temp anchor\n\t\t \tif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:\n \t\tvar ajax=new XMLHttpRequest();\n \t\tajax.open( \"GET\", url, true);\n \t\tajax.responseType = 'blob';\n \t\tajax.onload= function(e){ \n\t\t\t\t download(e.target.response, fileName, defaultMime);\n\t\t\t\t};\n \t\tsetTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:\n\t\t\t return ajax;\n\t\t\t} // end if valid url?\n\t\t} // end if url?\n\n\n\t\t//go ahead and download dataURLs right away\n\t\tif(/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)){\n\t\t\n\t\t\tif(payload.length > (1024*1024*1.999) && myBlob !== toString ){\n\t\t\t\tpayload=dataUrlToBlob(payload);\n\t\t\t\tmimeType=payload.type || defaultMime;\n\t\t\t}else{\t\t\t\n\t\t\t\treturn navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:\n\t\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) :\n\t\t\t\t\tsaver(payload) ; // everyone else can save dataURLs un-processed\n\t\t\t}\n\t\t\t\n\t\t}else{//not data url, is it a string with special needs?\n\t\t\tif(/([\\x80-\\xff])/.test(payload)){\t\t\t \n\t\t\t\tvar i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;\n\t\t\t\tfor(i;i')\n )}})])])])])]):_vm._e(),(_vm.m_data.stateBroker)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-4\"},[_c('div',{staticClass:\"e-card e-card-horizontal\",attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-image e-card-corner default broker\"}),_c('div',{staticClass:\"e-card-header-caption\"},[_c('div',{staticClass:\"e-card-header-title\"},[_vm._v(\" Proceso Comercial \")]),_c('div',{staticClass:\"e-card-content\"},[_c('b',{domProps:{\"innerHTML\":_vm._s(\n _vm.m_data.stateBroker.replaceAll('|', '
')\n )}})])])])])]):_vm._e(),(_vm.m_data.result)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-4\"},[_c('div',{staticClass:\"e-card e-card-horizontal\",attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-image e-card-corner default result\"}),_c('div',{staticClass:\"e-card-header-caption\"},[_c('div',{staticClass:\"e-card-header-title\"},[_vm._v(\" Resultado Trámite \")]),_c('div',{staticClass:\"e-card-content\"},[_c('b',{domProps:{\"innerHTML\":_vm._s(_vm.m_data.result.replaceAll('|', '
'))}})])])])])]):_vm._e()])]):_vm._e()])])]),(_vm.showId)?_c('div',{staticClass:\"col-md-12 col-lg-4\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Historial de Observaciones\")]),_c('div',{attrs:{\"id\":\"chat\"}},[_c('chat-request',{attrs:{\"dataList\":this.m_data.insuranceRequestComments}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('file-component',{ref:\"fileComp\",attrs:{\"requestId\":_vm.m_data.id,\"zoneName\":_vm.selectedZone,\"canView\":_vm.canSeeFiles,\"canDelete\":_vm.canRemoveFiles,\"canUpload\":_vm.canUploadFiles}})],1)])]):_vm._e()]),_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row text-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),(_vm.showDeleteButton)?_c('ejs-button',{attrs:{\"isDanger\":true,\"iconCss\":\"e-icons icon-trash inline-command\",\"cssClass\":\"e-flat e-danger e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateDelete($event)}}},[_vm._v(\"Desactivar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],1)])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formSearch\",staticClass:\"dialog-karin\",attrs:{\"id\":\"search-person\",\"target\":\"#dialogSearch\",\"isModal\":true,\"visible\":_vm.showSearch,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"z-index\":\"1004\"}},[_c('div',{staticStyle:{\"padding\":\"10px\",\"position\":\"absolute\"},attrs:{\"id\":\"dialog\"}},[_c('persons-form',{attrs:{\"showing\":_vm.dlgShow,\"formAction\":_vm.formAction,\"thirdPersonType\":_vm.thirdPersonType,\"isMobile\":_vm.isMobile,\"formData\":_vm.rowData},on:{\"formClosed\":_vm.hideForm}})],1),_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-3 col-md-3\"},[_c('label',{class:{ 'e-text': true, 'e-warning': _vm.hasError('searchTypeId') },staticStyle:{\"padding\":\"0px 40px 0px 0\"}},[_vm._v(\"Tipo de Busqueda\")]),_c('ejs-dropdownlist',{ref:\"searchDropDown\",attrs:{\"dataSource\":_vm.searchTypesList,\"fields\":_vm.fields,\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('searchTypeId') ? 'e-warning' : '',\"value\":_vm.m_data.searchTypeId,\"showClearButton\":true,\"placeholder\":\"Tipo de Busqueda\"},on:{\"change\":function($event){return _vm.validateField('searchTypeId')},\"blur\":function($event){return _vm.validateField('searchTypeId')}},model:{value:(_vm.m_data.searchTypeId),callback:function ($$v) {_vm.$set(_vm.m_data, \"searchTypeId\", $$v)},expression:\"m_data.searchTypeId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('searchTypeId') },domProps:{\"textContent\":_vm._s(_vm.m_errors.searchTypeId)}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-5 col-md-5 pull-right\"},[_c('label',{class:{ 'e-text': true, 'e-warning': _vm.hasError('searchValue') },staticStyle:{\"padding\":\"0px 40px 0px 0\"},attrs:{\"for\":\"searchValue\"}},[_vm._v(\"Valor a Buscar\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.searchValue),expression:\"m_data.searchValue\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('searchValue') },attrs:{\"type\":\"text\",\"required\":\"\"},domProps:{\"value\":(_vm.m_data.searchValue)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"searchValue\", $event.target.value)},function($event){return _vm.validateField('searchValue')}],\"blur\":function($event){return _vm.validateField('searchValue')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('searchValue') },domProps:{\"textContent\":_vm._s(_vm.m_errors.searchValue)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-4 col-md-4 classEspecial classRight\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-wait inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Buscar\")]),(!_vm.isMobile)?_c('ejs-button',{attrs:{\"isDanger\":true,\"iconCss\":\"e-icons icon-plus inline-command\",\"cssClass\":\"e-flat e-danger e-noback\"},nativeOn:{\"click\":function($event){return _vm.newPerson($event)}}},[_vm._v(\"Nuevo\")]):_vm._e()],1)])]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row \"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"dataSource\":_vm.gridData,\"allowSorting\":true,\"allowSelection\":true,\"selectionSettings\":_vm.selectionSettings,\"allowPaging\":true,\"pageSettings\":_vm.pageSettings,\"locale\":\"es-CO\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"idAux\",\"headerText\":\"Id\",\"textAlign\":\"Right\",\"width\":50,\"minWidth\":50,\"clipMode\":\"EllipsisWithTooltip\",\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"documentTypeName\",\"headerText\":\"Tipo Doc.\",\"textAlign\":\"Right\",\"width\":50,\"minWidth\":50,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"documentNumber\",\"headerText\":\"Numero Documento\",\"width\":100,\"clipMode\":\"EllipsisWithTooltip\",\"required\":true}}),_c('e-column',{attrs:{\"field\":\"fullPersonName\",\"headerText\":\"Nombre Completo\",\"width\":200,\"clipMode\":\"EllipsisWithTooltip\",\"required\":true}})],1)],1)],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 classRight\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-ok inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.selectPerson($event)}}},[_vm._v(\"Seleccionar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPerson.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchPerson.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchPerson.vue?vue&type=template&id=79ccefef&\"\nimport script from \"./SearchPerson.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchPerson.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchPerson.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"control-section\",attrs:{\"id\":\"List\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},_vm._l((_vm.dataFor),function(item,index){return _c('div',{key:item.id},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-2 col-sm-2 col-lg-2 col-md-2 incoming_msg\"},[_c('span',{staticClass:\"e-avatar e-avatar-circle\",class:index % 2 == 0 ? 'color1' : 'color2'},[_vm._v(_vm._s(item.fullNamePerson.charAt(0).toUpperCase()))])]),_c('div',{staticClass:\"col-xs-10 col-sm-10 col-lg-10 col-md-10 p-0\"},[_c('div',{staticClass:\"received_msg\",class:index % 2 == 0 ? 'content1' : 'content2'},[_c('p',{staticClass:\"name_msg\"},[_vm._v(\" \"+_vm._s(item.fullNamePerson)+\" - \"),_c('span',{staticClass:\"time_date\"},[_vm._v(\" \"+_vm._s(item.dateComment))]),_c('br'),_c('span',{staticClass:\"time_date\"},[_vm._v(\"Estado Origen:\")]),_vm._v(\" \"+_vm._s(item.stateOrigin)+\" \"),_c('br'),_c('span',{staticClass:\"time_date\"},[_vm._v(\"Estado Destino:\")]),_vm._v(\" \"+_vm._s(item.stateDestiny)+\" \"),_c('br'),(item.personRemitted)?_c('span',{staticClass:\"time_date\"},[_vm._v(\" Escalado A: \")]):_vm._e(),_vm._v(\" \"+_vm._s(item.personRemitted)+\" \")]),_c('p',{staticClass:\"content_msg\"},[_vm._v(_vm._s(item.comment))])])])])])}),0)])])}\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRequest.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRequest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChatRequest.vue?vue&type=template&id=63696cca&\"\nimport script from \"./ChatRequest.vue?vue&type=script&lang=js&\"\nexport * from \"./ChatRequest.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChatRequest.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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('div',{staticClass:\"Files\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Archivos Cargados\")]),_c('div',{attrs:{\"id\":\"GridContainer\"}},[_c('ejs-grid',{ref:\"uploadedFilesGrid\",attrs:{\"id\":\"uploadedFilesGrid\",\"dataSource\":_vm.gridDataSource,\"locale\":\"es-CO\",\"width\":\"100%\"}},[_c('e-columns',[_c('e-column',{attrs:{\"headerText\":\"Acciones\",\"AllowFiltering\":\"false\",\"width\":100,\"commands\":_vm.commands}}),_c('e-column',{attrs:{\"field\":\"id\",\"visible\":false,\"headerText\":\"Id\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"requestId\",\"visible\":false,\"headerText\":\"Id Solicitud\"}}),_c('e-column',{attrs:{\"field\":\"folderPath\",\"visible\":false,\"headerText\":\"Carpeta/Bucket\"}}),_c('e-column',{attrs:{\"field\":\"subFolderPath\",\"headerText\":\"Ubicación\",\"width\":130,\"minWidth\":130,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"fileName\",\"headerText\":\"Nombre Archivo\",\"width\":130,\"minWidth\":130,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"uploadDateString\",\"headerText\":\"Fecha\",\"minWidth\":120,\"width\":120,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"uploadUser\",\"headerText\":\"Usuario Carga\",\"width\":120,\"minWidth\":120}})],1)],1)],1)]),(_vm.canUpload)?_c('div',{staticClass:\"Uploader\",staticStyle:{\"margin-top\":\"20px\"}},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Subir Archivos\")]),_c('div',{staticClass:\"control_wrapper\"},[_c('ejs-uploader',{ref:\"uploadObj\",attrs:{\"id\":\"validation\",\"name\":\"UploadFiles\",\"asyncSettings\":_vm.uploaderSettings,\"locale\":_vm.locale,\"autoUpload\":false,\"beforeUpload\":_vm.beforeFileUpload,\"uploading\":_vm.onFileUpload,\"success\":_vm.fetchRequestFiles,\"allowedExtensions\":_vm.extensions,\"maxFileSize\":_vm.size}})],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileComponent.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileComponent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileComponent.vue?vue&type=template&id=16098c60&\"\nimport script from \"./FileComponent.vue?vue&type=script&lang=js&\"\nexport * from \"./FileComponent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileComponent.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RequestForm.vue?vue&type=template&id=28fb73de&\"\nimport script from \"./RequestForm.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"request-consult\",\"target\":\"#dialogRequestsConsult\",\"isModal\":true,\"visible\":_vm.showingConsult,\"header\":_vm.header,\"width\":_vm.width,\"height\":_vm.height,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"beforeOpen\":_vm.beforeDialogOpen,\"z-index\":\"1003\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('ejs-tab',{ref:\"tabView\",attrs:{\"id\":\"element\",\"selecting\":_vm.tabSelecting}},[_c('div',{staticClass:\"e-tab-header\"},[_c('div',[_vm._v(\"Tramite\")]),_c('div',[_vm._v(\"Carga Renovación\")])]),_c('div',{staticClass:\"e-content\"},[_c('div',[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Id Karin:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.id)}},[_vm._v(\"Id Karin\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Clase Requerimiento:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.requestType)}},[_vm._v(\"Clase Requerimiento\")])])]),(_vm.m_data.holder)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Tomador:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.holder)}},[_vm._v(\"Tomador\")])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Asignado:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.analyst)}},[_vm._v(\"Asignado\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Estado:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.currentState)}},[_vm._v(\"Estado\")])]),(_vm.m_data.currentSubState)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Sub Estado:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.currentSubState)}},[_vm._v(\"Sub Estado\")])]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Estado Comercial:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.currentStateBroker)}},[_vm._v(\"Estado Comercial\")])]),(_vm.m_data.currentSubStateBroker)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Sub Estado Comercial:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.currentSubStateBroker)}},[_vm._v(\"Sub Estado Comercial\")])]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Zona:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.zone)}},[_vm._v(\"Zona\")])]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Sucursal:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.branchOffice)}},[_vm._v(\"Sucursal\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Macro Ramo:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.macroInsuranceLine)}},[_vm._v(\"Macro Ramo\")])]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Ramo:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.insuranceLine)}},[_vm._v(\"Ramo\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Producto:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.product)}},[_vm._v(\"Producto\")])]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-4 col-lg-4\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"N° Riesgos:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.riskNumber)}},[_vm._v(\"N° Riesgos\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Intermediario:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.agent)}},[_vm._v(\"Intermediario\")])]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Comercial:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.broker)}},[_vm._v(\"Comercial\")])])]),_c('div',{staticClass:\"row\"},[(_vm.m_data.policyNumber)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Póliza:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.policyNumber)}},[_vm._v(\"Poliza\")])]):_vm._e(),(_vm.m_data.licensePlate)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(\"Placa:\")]),_c('label',{staticClass:\"e-text\",domProps:{\"textContent\":_vm._s(_vm.m_data.licensePlate)}},[_vm._v(\"Placa\")])]):_vm._e()]),_c('div',{staticClass:\"row\"},[(_vm.m_data.complexity)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{staticClass:\"e-card e-card-horizontal\",attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-image e-card-corner default complexity\"}),_c('div',{staticClass:\"e-card-header-caption\"},[_c('div',{staticClass:\"e-card-header-title\"},[_vm._v(\" Complejidad \")]),_c('div',{staticClass:\"e-card-content\"},[_c('b',{domProps:{\"textContent\":_vm._s(_vm.m_data.complexity)}})])])])])]):_vm._e()]),_c('div',{staticClass:\"row\"},[(_vm.m_data.agentNameExclusivity)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{staticClass:\"e-card e-card-horizontal\",attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-image e-card-corner default exclusivity\"}),_c('div',{staticClass:\"e-card-header-caption\"},[_c('div',{staticClass:\"e-card-header-title\"},[_vm._v(\" Intermediario Exclusividad \")]),_c('div',{staticClass:\"e-card-content\"},[_c('b',{domProps:{\"textContent\":_vm._s(_vm.m_data.agentNameExclusivity)}})])])])])]):_vm._e()]),_c('div',{staticClass:\"row\"},[(_vm.m_data.restrictiveData)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{staticClass:\"e-card e-card-horizontal\",attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-image e-card-corner default restrictive\"}),_c('div',{staticClass:\"e-card-header-caption\"},[_c('div',{staticClass:\"e-card-header-title\"},[_vm._v(\" Consulta Listas Restrictivas \")]),_c('div',{staticClass:\"e-card-content\"},[_c('b',{domProps:{\"textContent\":_vm._s(_vm.m_data.restrictiveData)}})])])])])]):_vm._e()]),_c('div',{staticClass:\"row\"},[(_vm.m_data.result)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{staticClass:\"e-card e-card-horizontal\",attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"e-card-header\"},[_c('div',{staticClass:\"e-card-header-image e-card-corner default result\"}),_c('div',{staticClass:\"e-card-header-caption\"},[_c('div',{staticClass:\"e-card-header-title\"},[_vm._v(\" Resultado Trámite \")]),_c('div',{staticClass:\"e-card-content\"},[_c('b',{domProps:{\"textContent\":_vm._s(_vm.m_data.result)}})])])])])]):_vm._e()]),_c('div',{staticClass:\"row\"})])]),_c('div',[_c('div',{staticClass:\"content-wrapper\"},_vm._l((_vm.m_data.renewalConsult),function(item){return _c('div',{key:item.label},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12\"},[_c('label',{staticClass:\"caption-text\"},[_vm._v(_vm._s(item.label))]),_c('label',{staticClass:\"e-text\"},[_vm._v(_vm._s(item.value))])])])}),0)])])])],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-6 col-lg-6\"},[_c('ejs-tab',{ref:\"tabProcess\",attrs:{\"id\":\"element\",\"selecting\":_vm.tabSelecting}},[_c('div',{staticClass:\"e-tab-header\"},[_c('div',[_vm._v(\"Proceso\")]),_c('div',[_vm._v(\"Archivos Adjuntos\")])]),_c('div',{staticClass:\"e-content\"},[_c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showProcess),expression:\"showProcess\"}],attrs:{\"id\":\"processForm\"}},[_c('process-form',{ref:\"processForm\",attrs:{\"requestType\":_vm.requestType,\"dataList\":_vm.dataList,\"currentStateId\":_vm.currentStateId,\"zoneId\":_vm.m_data.zoneId,\"requestId\":_vm.requestId},on:{\"endProcess\":_vm.endProcess}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAdditional),expression:\"showAdditional\"}],attrs:{\"id\":\"additionalForm\"}},[_c('additional-form',{attrs:{\"requestId\":_vm.requestId,\"dataList\":_vm.dataList,\"m_data\":_vm.m_data,\"isRenovation\":_vm.m_data.isRenovation,\"viewChangeAnalyst\":_vm.viewChangeAnalyst},on:{\"endProcess\":_vm.endProcessTabSearch}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showReassigned),expression:\"showReassigned\"}],attrs:{\"id\":\"reassignedForm\"}},[_c('reassigned-form',{attrs:{\"requestId\":_vm.requestId,\"dataList\":_vm.dataList,\"zoneId\":_vm.m_data.zoneId,\"isRenovation\":_vm.m_data.isRenovation,\"isApplication\":_vm.m_data.isApplication},on:{\"endProcess\":_vm.endProcessTabSearch}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showReassignedBroker),expression:\"showReassignedBroker\"}],attrs:{\"id\":\"reassignedBrokerForm\"}},[_c('reassigned-broker-form',{attrs:{\"requestId\":_vm.requestId,\"dataList\":_vm.dataList,\"branchOfficeId\":_vm.m_data.branchOfficeId,\"brokerId\":_vm.m_data.brokerForAgent},on:{\"endProcess\":_vm.endProcessTabSearch}})],1)]),_c('div',[_c('file-component',{ref:\"fileComp\",attrs:{\"requestId\":_vm.m_data.id,\"zoneName\":_vm.m_data.zone,\"canView\":_vm.canSeeFiles,\"canDelete\":_vm.canRemoveFiles,\"canUpload\":_vm.canUploadFiles}})],1)])])],1)])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"requestStateId\"}},[_vm._v(\"Estado\")]),_c('ejs-dropdownlist',{ref:\"stateTypeDropDown\",attrs:{\"id\":\"requestStateId\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('requestStateId') ? 'e-warning' : '',\"value\":_vm.m_process.requestStateId,\"dataSource\":_vm.loadRequestStates,\"fields\":_vm.fields,\"showClearButton\":true,\"placeholder\":\"Estado\"},on:{\"change\":function($event){return _vm.validateField('requestStateId')},\"blur\":function($event){return _vm.validateField('requestStateId')}},model:{value:(_vm.m_process.requestStateId),callback:function ($$v) {_vm.$set(_vm.m_process, \"requestStateId\", $$v)},expression:\"m_process.requestStateId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('requestStateId') },domProps:{\"textContent\":_vm._s(_vm.m_errors.requestStateId)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"requestSubStateId\"}},[_vm._v(\"Sub Estado\")]),_c('ejs-dropdownlist',{ref:\"stateTypeDropDown\",attrs:{\"id\":\"requestSubStateId\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('requestSubStateId') ? 'e-warning' : '',\"value\":_vm.m_process.requestSubStateId,\"dataSource\":_vm.subStatesList,\"fields\":_vm.fields,\"showClearButton\":true,\"placeholder\":\"Sub Estado\"},on:{\"change\":function($event){return _vm.validateField('requestSubStateId')},\"blur\":function($event){return _vm.validateField('requestSubStateId')}},model:{value:(_vm.m_process.requestSubStateId),callback:function ($$v) {_vm.$set(_vm.m_process, \"requestSubStateId\", $$v)},expression:\"m_process.requestSubStateId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('requestSubStateId') },domProps:{\"textContent\":_vm._s(_vm.m_errors.requestSubStateId)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('ejs-checkbox',{attrs:{\"label\":\"Requiere Inspección\",\"checked\":_vm.m_process.isInspection,\"cssClass\":\"align-middle\",\"id\":\"tramiteInspection\",\"disabled\":_vm.disableCheckBoxes},model:{value:(_vm.m_process.isInspection),callback:function ($$v) {_vm.$set(_vm.m_process, \"isInspection\", $$v)},expression:\"m_process.isInspection\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('ejs-checkbox',{attrs:{\"label\":\"Es Facultativo\",\"checked\":_vm.m_process.isFacultative,\"cssClass\":\"align-middle\",\"id\":\"tramiteFacultative\",\"disabled\":_vm.disableCheckBoxes},model:{value:(_vm.m_process.isFacultative),callback:function ($$v) {_vm.$set(_vm.m_process, \"isFacultative\", $$v)},expression:\"m_process.isFacultative\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{attrs:{\"id\":\"chat\"}},[_c('chat-request',{attrs:{\"dataList\":_vm.dataList}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_process.comment),expression:\"m_process.comment\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('comment') },attrs:{\"id\":\"comment\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Observaciones\"},domProps:{\"value\":(_vm.m_process.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_process, \"comment\", $event.target.value)},function($event){return _vm.validateField('comment')}],\"blur\":function($event){return _vm.validateField('comment')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('comment') },domProps:{\"textContent\":_vm._s(_vm.m_errors.comment)}})])]),(_vm.isRemitted)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"assignTo\"}},[_vm._v(\"Asignar a\")]),_c('ejs-dropdownlist',{ref:\"assignToDropDown\",attrs:{\"id\":\"assignTo\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('assignTo') ? 'e-warning' : '',\"dataSource\":_vm.assignToList,\"fields\":_vm.fields,\"value\":_vm.m_process.assignTo,\"showClearButton\":true,\"placeholder\":\"Asignar A\"},on:{\"change\":function($event){return _vm.validateField('assignTo')},\"blur\":function($event){return _vm.validateField('assignTo')}},model:{value:(_vm.m_process.assignTo),callback:function ($$v) {_vm.$set(_vm.m_process, \"assignTo\", $$v)},expression:\"m_process.assignTo\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('assignTo') },domProps:{\"textContent\":_vm._s(_vm.m_errors.assignTo)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"type\"},domProps:{\"textContent\":_vm._s(_vm.m_process.assignTo == 1 ? 'Rol Usuario' : 'Tipo Tercero')}}),_c('ejs-dropdownlist',{ref:\"typeDropDown\",attrs:{\"id\":\"type\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('type') ? 'e-warning' : '',\"dataSource\":_vm.typeList,\"fields\":_vm.fields,\"value\":_vm.m_process.type,\"showClearButton\":true,\"placeholder\":_vm.m_process.assignTo == 1 ? 'Rol Usuario' : 'Tipo Tercero'},on:{\"change\":function($event){return _vm.validateField('type')},\"blur\":function($event){return _vm.validateField('type')}},model:{value:(_vm.m_process.type),callback:function ($$v) {_vm.$set(_vm.m_process, \"type\", $$v)},expression:\"m_process.type\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('type') },domProps:{\"textContent\":_vm._s(_vm.m_errors.type)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"personRemitted\"},domProps:{\"textContent\":_vm._s(_vm.m_process.assignTo == 1 ? 'Usuario' : 'Tercero')}}),_c('ejs-dropdownlist',{ref:\"personDropDown\",attrs:{\"id\":\"personRemitted\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('personRemitted') ? 'e-warning' : '',\"dataSource\":_vm.personList,\"fields\":_vm.fields,\"value\":_vm.m_process.personRemitted,\"showClearButton\":true,\"placeholder\":_vm.m_process.assignTo == 1 ? 'Usuario' : 'Tercero'},on:{\"change\":function($event){return _vm.validateField('personRemitted')},\"blur\":function($event){return _vm.validateField('personRemitted')}},model:{value:(_vm.m_process.personRemitted),callback:function ($$v) {_vm.$set(_vm.m_process, \"personRemitted\", $$v)},expression:\"m_process.personRemitted\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('personRemitted') },domProps:{\"textContent\":_vm._s(_vm.m_errors.personRemitted)}})],1)])])]):_vm._e(),(_vm.isResult)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"premium\"}},[_vm._v(\"Prima\")]),_c('ejs-numerictextbox',{attrs:{\"id\":\"premium\",\"format\":\"c2\",\"locale\":\"es-CO\",\"min\":0,\"cssClass\":_vm.hasError('premium') ? 'e-warning' : '',\"placeholder\":\"Prima\"},on:{\"input\":function($event){return _vm.validateField('premium')},\"blur\":function($event){return _vm.validateField('premium')}},model:{value:(_vm.m_process.premium),callback:function ($$v) {_vm.$set(_vm.m_process, \"premium\", $$v)},expression:\"m_process.premium\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('premium') },domProps:{\"textContent\":_vm._s(_vm.m_errors.premium)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"rate\"}},[_vm._v(\"Tasa\")]),_c('ejs-numerictextbox',{attrs:{\"id\":\"rate\",\"locale\":\"es-CO\",\"min\":0,\"placeholder\":\"Tasa\"},model:{value:(_vm.m_process.rate),callback:function ($$v) {_vm.$set(_vm.m_process, \"rate\", $$v)},expression:\"m_process.rate\"}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Campaña\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_process.campaign),expression:\"m_process.campaign\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('campaign') },attrs:{\"id\":\"campaign\",\"type\":\"text\",\"required\":\"\"},domProps:{\"value\":(_vm.m_process.campaign)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_process, \"campaign\", $event.target.value)},function($event){return _vm.validateField('campaign')}],\"blur\":function($event){return _vm.validateField('campaign')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('campaign') },domProps:{\"textContent\":_vm._s(_vm.m_errors.campaign)}})])])])]):_vm._e(),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProcessForm.vue?vue&type=template&id=0c2e5bc8&\"\nimport script from \"./ProcessForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ProcessForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProcessForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"requestTypeAdId\"}},[_vm._v(\"Clase Requerimiento\")]),_c('ejs-dropdownlist',{ref:\"requestTypeDropDown\",attrs:{\"id\":\"requestTypeAdId\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('requestTypeId') ? 'e-warning' : '',\"value\":_vm.m_additional.requestTypeId,\"dataSource\":_vm.requestTypesList,\"fields\":_vm.fields,\"showClearButton\":true,\"placeholder\":\"Clase Requerimiento\"},on:{\"change\":function($event){return _vm.validateField('requestTypeId')},\"blur\":function($event){return _vm.validateField('requestTypeId')}},model:{value:(_vm.m_additional.requestTypeId),callback:function ($$v) {_vm.$set(_vm.m_additional, \"requestTypeId\", $$v)},expression:\"m_additional.requestTypeId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('requestTypeId') },domProps:{\"textContent\":_vm._s(_vm.m_errors.requestTypeId)}})],1)])]),(_vm.viewChangeAnalyst)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('ejs-checkbox',{attrs:{\"label\":\"Cambiar Asignación de Analista\",\"checked\":_vm.m_additional.isChange,\"cssClass\":\"align-middle\",\"id\":\"isChange\"},model:{value:(_vm.m_additional.isChange),callback:function ($$v) {_vm.$set(_vm.m_additional, \"isChange\", $$v)},expression:\"m_additional.isChange\"}}),_c('span',{staticClass:\"help e-text small\"})],1)]),(_vm.m_additional.isChange)?_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isCharge\",\"checked\":_vm.m_additional.isCharge},model:{value:(_vm.m_additional.isCharge),callback:function ($$v) {_vm.$set(_vm.m_additional, \"isCharge\", $$v)},expression:\"m_additional.isCharge\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isCharge\"}},[_vm._v(_vm._s(_vm.m_additional.isCharge ? \"Asignar por Balanceo de Carga\" : \"Manualmente\"))])],1),_c('div')]):_vm._e()]):_vm._e(),(!_vm.m_additional.isCharge)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"userAssigned\"}},[_vm._v(\"Analista\")]),_c('ejs-dropdownlist',{ref:\"userDropDown\",attrs:{\"id\":\"userAssigned\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('userAssigned') ? 'e-warning' : '',\"dataSource\":_vm.analystList,\"fields\":_vm.fields,\"value\":_vm.m_additional.userAssigned,\"showClearButton\":true,\"placeholder\":\"Analista\"},on:{\"change\":function($event){return _vm.validateField('userAssigned')},\"blur\":function($event){return _vm.validateField('userAssigned')}},model:{value:(_vm.m_additional.userAssigned),callback:function ($$v) {_vm.$set(_vm.m_additional, \"userAssigned\", $$v)},expression:\"m_additional.userAssigned\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('userAssigned') },domProps:{\"textContent\":_vm._s(_vm.m_errors.userAssigned)}})],1)])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{attrs:{\"id\":\"chat\"}},[_c('chat-request',{attrs:{\"dataList\":_vm.dataList}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_additional.comment),expression:\"m_additional.comment\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('comment') },attrs:{\"id\":\"commentAdditional\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Observaciones\"},domProps:{\"value\":(_vm.m_additional.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_additional, \"comment\", $event.target.value)},function($event){return _vm.validateField('comment')}],\"blur\":function($event){return _vm.validateField('comment')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('comment') },domProps:{\"textContent\":_vm._s(_vm.m_errors.comment)}})])]),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdditionalForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdditionalForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AdditionalForm.vue?vue&type=template&id=313e88da&\"\nimport script from \"./AdditionalForm.vue?vue&type=script&lang=js&\"\nexport * from \"./AdditionalForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdditionalForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"userReassigned\"}},[_vm._v(\"Analista\")]),_c('ejs-dropdownlist',{ref:\"userDropDown\",attrs:{\"id\":\"userReassigned\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('userDestiny') ? 'e-warning' : '',\"dataSource\":_vm.analystList,\"fields\":_vm.fields,\"value\":_vm.m_assigned.userDestiny,\"showClearButton\":true,\"placeholder\":\"Analista\"},on:{\"change\":function($event){return _vm.validateField('userDestiny')},\"blur\":function($event){return _vm.validateField('userDestiny')}},model:{value:(_vm.m_assigned.userDestiny),callback:function ($$v) {_vm.$set(_vm.m_assigned, \"userDestiny\", $$v)},expression:\"m_assigned.userDestiny\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('userDestiny') },domProps:{\"textContent\":_vm._s(_vm.m_errors.userDestiny)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{attrs:{\"id\":\"chat\"}},[_c('chat-request',{attrs:{\"dataList\":_vm.dataList}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_assigned.comment),expression:\"m_assigned.comment\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('comment') },attrs:{\"id\":\"commentReassigned\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Observaciones\"},domProps:{\"value\":(_vm.m_assigned.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_assigned, \"comment\", $event.target.value)},function($event){return _vm.validateField('comment')}],\"blur\":function($event){return _vm.validateField('comment')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('comment') },domProps:{\"textContent\":_vm._s(_vm.m_errors.comment)}})])]),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReassignedForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReassignedForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReassignedForm.vue?vue&type=template&id=a34e141a&\"\nimport script from \"./ReassignedForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ReassignedForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReassignedForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"brokerReassigned\"}},[_vm._v(\"Comercial\")]),_c('ejs-dropdownlist',{ref:\"brokerDropDown\",attrs:{\"id\":\"brokerReassigned\",\"locale\":\"es-CO\",\"cssClass\":_vm.hasError('brokerDestiny') ? 'e-warning' : '',\"dataSource\":_vm.brokersList,\"fields\":_vm.fields,\"value\":_vm.m_assigned.brokerDestiny,\"showClearButton\":true,\"placeholder\":\"Nuevo Comercial\"},on:{\"change\":function($event){return _vm.validateField('brokerDestiny')},\"blur\":function($event){return _vm.validateField('brokerDestiny')}},model:{value:(_vm.m_assigned.brokerDestiny),callback:function ($$v) {_vm.$set(_vm.m_assigned, \"brokerDestiny\", $$v)},expression:\"m_assigned.brokerDestiny\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('brokerDestiny') },domProps:{\"textContent\":_vm._s(_vm.m_errors.brokerDestiny)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{attrs:{\"id\":\"chat\"}},[_c('chat-request',{attrs:{\"dataList\":_vm.dataList}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_assigned.comment),expression:\"m_assigned.comment\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('comment') },attrs:{\"id\":\"commentReassignedBroker\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Observaciones\"},domProps:{\"value\":(_vm.m_assigned.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_assigned, \"comment\", $event.target.value)},function($event){return _vm.validateField('comment')}],\"blur\":function($event){return _vm.validateField('comment')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('comment') },domProps:{\"textContent\":_vm._s(_vm.m_errors.comment)}})])]),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\",\"disabled\":_vm.disableButtons},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReassignedBrokerForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReassignedBrokerForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReassignedBrokerForm.vue?vue&type=template&id=1b738f3d&\"\nimport script from \"./ReassignedBrokerForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ReassignedBrokerForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReassignedBrokerForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestConsult.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestConsult.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RequestConsult.vue?vue&type=template&id=f7945cda&\"\nimport script from \"./RequestConsult.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestConsult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestConsult.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestList.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RequestList.vue?vue&type=template&id=0094d6e7&\"\nimport script from \"./RequestList.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestList.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"container-fluid\"},[_c('div',{staticClass:\"control-section e-control\"},[_c('div',[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Fecha corte\")]),_c('ejs-datepicker',{attrs:{\"id\":\"toDate\",\"placeholder\":\"Fecha corte\",\"required\":\"\",\"format\":_vm.dateFormat,\"strictMode\":true},model:{value:(_vm.m_filter.toDate),callback:function ($$v) {_vm.$set(_vm.m_filter, \"toDate\", $$v)},expression:\"m_filter.toDate\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"radicationYear\"}},[_vm._v(\"Año Radicación\")]),_c('ejs-multiselect',{attrs:{\"id\":\"radicationYear\",\"dataSource\":_vm.yearsList,\"placeholder\":\"Año\",\"mode\":\"CheckBox\",\"fields\":_vm.fields,\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Año\",\"cssClass\":_vm.hasError('years') ? 'e-warning' : ''},on:{\"blur\":function($event){return _vm.validateField('years')},\"change\":function($event){return _vm.validateField('years')}},model:{value:(_vm.m_filter.radicationYear),callback:function ($$v) {_vm.$set(_vm.m_filter, \"radicationYear\", $$v)},expression:\"m_filter.radicationYear\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('years') },domProps:{\"textContent\":_vm._s(_vm.m_errors.years)}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"radicationMonth\"}},[_vm._v(\"Mes Radicación\")]),_c('ejs-multiselect',{attrs:{\"id\":\"radicationMonth\",\"dataSource\":_vm.monthsList,\"placeholder\":\"Mes\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Mes\"},model:{value:(_vm.m_filter.radicationMonth),callback:function ($$v) {_vm.$set(_vm.m_filter, \"radicationMonth\", $$v)},expression:\"m_filter.radicationMonth\"}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"zones\"}},[_vm._v(\"Zona\")]),_c('ejs-multiselect',{attrs:{\"id\":\"zones\",\"dataSource\":_vm.zonesList,\"placeholder\":\"Zona\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Zona\"},model:{value:(_vm.m_filter.zonesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"zonesList\", $$v)},expression:\"m_filter.zonesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"branchOffices\"}},[_vm._v(\"Sucursal\")]),_c('ejs-multiselect',{attrs:{\"id\":\"branchOffices\",\"dataSource\":_vm.branchOfficesList,\"placeholder\":\"Sucursal\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Sucursal\"},model:{value:(_vm.m_filter.branchOfficesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"branchOfficesList\", $$v)},expression:\"m_filter.branchOfficesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"requestTypes\"}},[_vm._v(\"Clase Requerimiento\")]),_c('ejs-multiselect',{attrs:{\"id\":\"requestTypes\",\"dataSource\":_vm.requestTypesList,\"placeholder\":\"Clase Requerimiento\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Clase Requerimiento\"},model:{value:(_vm.m_filter.requestTypesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"requestTypesList\", $$v)},expression:\"m_filter.requestTypesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"macroLines\"}},[_vm._v(\"Macro Ramo\")]),_c('ejs-multiselect',{attrs:{\"id\":\"macroLines\",\"dataSource\":_vm.macroLinesList,\"placeholder\":\"Macro Ramo\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Macro Ramo\"},model:{value:(_vm.m_filter.macroLinesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"macroLinesList\", $$v)},expression:\"m_filter.macroLinesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"insuranceLines\"}},[_vm._v(\"Ramo\")]),_c('ejs-multiselect',{attrs:{\"id\":\"insuranceLines\",\"dataSource\":_vm.insuranceLinesList,\"placeholder\":\"Ramo\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Ramo\"},model:{value:(_vm.m_filter.insuranceLinesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"insuranceLinesList\", $$v)},expression:\"m_filter.insuranceLinesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"brokers\"}},[_vm._v(\"Comercial\")]),_c('ejs-multiselect',{attrs:{\"id\":\"brokers\",\"dataSource\":_vm.brokersList,\"placeholder\":\"Comercial\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar comercial\"},model:{value:(_vm.m_filter.brokersList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"brokersList\", $$v)},expression:\"m_filter.brokersList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"agents\"}},[_vm._v(\"Intermediario\")]),_c('ejs-multiselect',{attrs:{\"id\":\"agents\",\"dataSource\":_vm.agentsList,\"placeholder\":\"Intermediario\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Intermediario\"},model:{value:(_vm.m_filter.agentsList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"agentsList\", $$v)},expression:\"m_filter.agentsList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"requestStates\"}},[_vm._v(\"Estado Técnico\")]),_c('ejs-multiselect',{attrs:{\"id\":\"requestStates\",\"dataSource\":_vm.requestStatesList,\"placeholder\":\"Estado Técnico\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Estado Técnico\"},model:{value:(_vm.m_filter.requestStatesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"requestStatesList\", $$v)},expression:\"m_filter.requestStatesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"brokerStates\"}},[_vm._v(\"Estado Comercial\")]),_c('ejs-multiselect',{attrs:{\"id\":\"brokerStates\",\"dataSource\":_vm.brokerStatesList,\"placeholder\":\"Estado Comercial\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Estado Comercial\"},model:{value:(_vm.m_filter.brokerStatesList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"brokerStatesList\", $$v)},expression:\"m_filter.brokerStatesList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 col-lg-2\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"analystList\"}},[_vm._v(\"Analista\")]),_c('ejs-multiselect',{attrs:{\"id\":\"analystList\",\"dataSource\":_vm.analystList,\"placeholder\":\"Analista\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Analista\"},model:{value:(_vm.m_filter.analystList),callback:function ($$v) {_vm.$set(_vm.m_filter, \"analystList\", $$v)},expression:\"m_filter.analystList\"}})],1),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 classEspecial\"},[_c('div',{staticClass:\"e-btn-group\"},[_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons e-report inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.searchData($event)}}},[_vm._v(\"Generar Reporte\")])],1)])]),_vm._m(1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"toolbarClick\":_vm.toolbar_click,\"actionBegin\":_vm.onActionBegin,\"actionComplete\":_vm.onActionComplete,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.gridData,\"query\":_vm.query,\"allowSorting\":true,\"allowSelection\":false,\"allowExcelExport\":true,\"allowFiltering\":true,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"filterSettings\":_vm.filterSettings,\"load\":_vm.load,\"dataBound\":_vm.dataBound,\"locale\":\"es-CO\"}})],1)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('br')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('br')])}]\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportList.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReportList.vue?vue&type=template&id=2d0b22be&\"\nimport script from \"./ReportList.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReportList.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 __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, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, append, Animation } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, KeyboardEvents, setValue, getValue, ChildProperty } from '@syncfusion/ej2-base';\nimport { Collection, Complex, Browser, Ajax, getUniqueID, closest, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, select, selectAll } from '@syncfusion/ej2-base';\nvar ROOT = 'e-uploader';\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @class */ (function (_super) {\n __extends(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nexport { FilesProp };\nvar ButtonsProps = /** @class */ (function (_super) {\n __extends(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nexport { ButtonsProps };\nvar AsyncSettings = /** @class */ (function (_super) {\n __extends(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\nexport { AsyncSettings };\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Uploader = /** @class */ (function (_super) {\n __extends(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = { accept: null, multiple: false, disabled: false };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n /**\n * Get the file item(li) which are shown in file list.\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n Uploader.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 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n if (!this.isServerBlazor) {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.isServerBlazor = (isBlazor() && this.isServerRendered) ? true : false;\n this.isBlazorTemplate = this.isServerBlazor && this.template !== '' && !isNullOrUndefined(this.template) ? true : false;\n this.isBlazorSaveUrl = (this.isServerRendered &&\n (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl))) ? true : false;\n if (this.isBlazorSaveUrl && this.sequentialUpload) {\n this.sequentialUpload = false;\n }\n if (!this.isBlazorSaveUrl) {\n this.formRendered();\n }\n if (!this.isServerBlazor) {\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n // tslint:disable-next-line\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', { attrs: { type: 'file' } });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n }\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Uploader.prototype.render = function () {\n if (!this.isServerBlazor) {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n }\n else {\n this.dropAreaWrapper = closest(this.element, '.' + DROP_WRAPPER);\n this.uploadWrapper = closest(this.element, '.e-upload.e-control-wrapper');\n this.browseButton = this.dropAreaWrapper.querySelector('button.e-upload-browse-btn');\n this.setDropArea();\n this.renderPreLoadFiles();\n this.wireEvents();\n }\n if (this.isServerBlazor) {\n this.renderComplete();\n }\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n this.uploadButton.focus();\n this.wireActionButtonEvents();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.serverUlElement = function (element) {\n if (element) {\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n this.listParent = element;\n this.fileList = [].slice.call(this.listParent.querySelectorAll('li'));\n this.serverRemoveIconBindEvent();\n if (!this.isForm) {\n this.checkAutoUpload(this.filesData);\n }\n }\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n detach(this.actionButtons);\n }\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = void 0;\n uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = void 0;\n clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.createFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.createFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else if (!this.isServerBlazor) {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n if (!this.isServerBlazor) {\n var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n }\n };\n Uploader.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 (wrapperAttr.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n };\n Uploader.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 (wrapperAttr.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = (this.htmlAttributes[pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n ++this.count;\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (item.length !== 1) {\n return;\n }\n var pasteFile = [].slice.call(item)[0];\n if ((pasteFile.kind === 'file') && pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (var j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n if (this.isBlazorSaveUrl) {\n this.fileList = [].slice.call(this.uploadWrapper.querySelectorAll('li'));\n }\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n this.element.value = '';\n this.checkActionButtonStatus();\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n if (!this.isBlazorSaveUrl) {\n detach(selectedElement);\n }\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (!this.isBlazorSaveUrl) {\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('removeFileData', index);\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (isBlazor()) {\n if (_this.currentRequestHeader) {\n _this.updateCustomheader(ajax.httpRequest, _this.currentRequestHeader);\n }\n if (_this.customFormDatas) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n }\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n if (this.isServerBlazor) {\n var name_1 = this.element.getAttribute('name');\n if (!isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name_1, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name_1, selectedFiles.name);\n }\n }\n ajax.onLoad = function (e) { _this.removeCompleted(e, selectedFiles, custom); return {}; };\n /* istanbul ignore next */\n ajax.onError = function (e) { _this.removeFailed(e, selectedFiles, custom); return {}; };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = void 0;\n spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ? liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (!this.isServerBlazor) {\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // tslint:disable-next-line\n var value = Object.keys(data).map(function (e) {\n return data[e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // tslint:disable-next-line\n var value = Object.keys(data).map(function (e) {\n return data[e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items;\n items = this.multiple ? event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n // tslint:disable-next-line\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n // tslint:disable-next-line\n (item).file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({ 'path': path, 'file': fileObj });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n }\n else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n // tslint:disable-next-line\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n // tslint:disable\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n // tslint:disable-next-line\n var directoryReader = item.createReader();\n // tslint:disable-next-line\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n // tslint:disable\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n // tslint:disable-next-line\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i]);\n // tslint:disable-next-line\n }\n ;\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n // tslint:disable-next-line\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n // tslint:enable\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () { return resolve(fileReader.result); };\n fileReader.onerror = function (error) { return reject(error); };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, \n // tslint:disable-next-line\n targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n // tslint:disable-next-line\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, \n // tslint:disable-next-line\n targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n if (isBlazor()) {\n this.currentRequestHeader = eventArgs.currentRequest;\n this.customFormDatas = eventArgs.customFormData;\n }\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = dataFiles;\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.createFileList(fileData, true);\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.filesData = this.filesData.concat(fileData);\n }\n if (!this.isForm || this.allowUpload()) {\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.checkAutoUpload(fileData);\n }\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.isBlazorSaveUrl) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('updateServerFileData', this.filesData, this.isForm);\n }\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent) && !(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('clearAll');\n }\n else {\n this.removeActionButtons();\n }\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', { id: 'clonewrapper' });\n var added = -1;\n var removedList;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n removedList = this.listParent.querySelectorAll('li');\n for (var _i = 0, removedList_1 = removedList; _i < removedList_1.length; _i++) {\n var item = removedList_1[_i];\n detach(item);\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.createFileList([filesData[index]]);\n }\n }\n }\n else {\n this.createFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = this.allowedExtensions.split(',');\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n if (allowedExtensions.indexOf(('.' + files[i].type).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n resetBlazorTemplate(this.element.id + 'Template', 'Template');\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var liElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n // tslint:disable-next-line\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, liElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, liElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n }\n this.renderReactTemplates();\n updateBlazorTemplate(this.element.id + 'Template', 'Template', this, false);\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n resetBlazorTemplate(this.element.id + 'Template', 'Template');\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n // tslint:disable-next-line\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n updateBlazorTemplate(this.element.id + 'Template', 'Template', this, false);\n };\n /**\n * Create the file list for specified files data.\n * @param { FileInfo[] } fileData - specifies the files data for file list creation.\n * @returns void\n */\n Uploader.prototype.createFileList = function (fileData, isSelectedFile) {\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n var fileListData = (isSelectedFile) ? this.filesData = this.filesData.concat(fileData) : fileData;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('createFileList', fileListData, this.isForm);\n }\n else {\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n var textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text;\n text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) { updateLiStatus = true; }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n if (this.isBlazorSaveUrl) {\n for (var i = 0; i < this.filesData.length; i++) {\n if (this.filesData[i].name === files.name) {\n this.filesData[i].status = status;\n this.filesData[i].statusCode = statusCode;\n }\n }\n }\n else {\n files.status = status;\n files.statusCode = statusCode;\n }\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if ((!isNullOrUndefined(this.filesData[i].id) && !isNullOrUndefined(files.id)) ? (this.filesData[i].name === files.name &&\n this.filesData[i].id === files.id) : this.filesData[i].name === files.name) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n var progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n var progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = { e: e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: []\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) { _this.removecanceledFile(e, files); return {}; };\n ajax.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) { _this.reloadcanceledFile(e, file, liElement, false); }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n liElement.classList.add(RESTRICT_RETRY);\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI))) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n // tslint:disable-next-line\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverRemoveIconBindEvent = function () {\n if (this.uploadWrapper && this.isBlazorSaveUrl) {\n var iconElement = [].slice.call(this.uploadWrapper.querySelectorAll('ul li'));\n for (var i = 0; i < iconElement.length; i++) {\n var removeIconEle = (iconElement[i]) ? iconElement[i].querySelector('.e-icons') : null;\n if (removeIconEle) {\n EventHandler.remove(removeIconEle, 'click', this.removeFiles);\n EventHandler.add(removeIconEle, 'click', this.removeFiles, this);\n }\n }\n }\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n if (!this.isBlazorSaveUrl) {\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n }\n this.trigger('success', args, function (args) {\n // tslint:disable-next-line\n _this.updateStatus(file, args.statusText, '2');\n _this.uploadedFilesData.push(file);\n if (!_this.isBlazorSaveUrl) {\n _this.trigger('change', { file: _this.uploadedFilesData });\n }\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if ((!(_this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (_this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n // tslint:disable-next-line\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n increment ? ++this.actionCompleteCount : --this.actionCompleteCount;\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(function () { _this.animateProgressBar(li, callType); }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n var exception = void 0;\n try {\n if (selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n this.enableRtl ? addClass([this.uploadWrapper], RTL) : removeClass([this.uploadWrapper], RTL);\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\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 'accept':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var cloneFile;\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append('chunkFile', blob, file.name);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = function (e) { _this.chunkUploadComplete(e, metaData, custom); return {}; };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n /* istanbul ignore next */\n if (isBlazor()) {\n if (_this.currentRequestHeader) {\n _this.updateCustomheader(ajax.httpRequest, _this.currentRequestHeader);\n }\n if (_this.customFormDatas) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n }\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) { _this.chunkUploadFailed(e, metaData, custom); return {}; };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) { _this.reloadcanceledFile(e, file, liElement); }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = { event: e, fileData: metaData.file, cancel: false, customFormData: [] };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_3 = _this.element.getAttribute('name');\n formData.append(name_3, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) { _this.removeChunkFile(e, metaData, custom); return {}; };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n pauseIcon.classList.add(RETRY_ICON);\n pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n // tslint:disable-next-line\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () { _this.retryRequest(liElement, metaData, custom); }, _this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n // tslint:disable-next-line\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n };\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var target;\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var loadedSize = (metaData.chunkIndex * this.asyncSettings.chunkSize);\n var currentLoaded = e.loaded;\n if (currentLoaded > this.asyncSettings.chunkSize) {\n currentLoaded = this.asyncSettings.chunkSize;\n }\n var value = Math.min((((loadedSize + currentLoaded) / metaData.file.size) * 100), 100);\n this.changeProgressValue(liElement, Math.round(value).toString() + '%');\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) { _this.checkPausePlayAction(e); }, false);\n }\n };\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n * @param { number } bytes - specifies the file size in bytes.\n * @returns string\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n var size;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns File[]\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n var index = 0;\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_4 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_4 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.clearAll();\n }\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!this.isServerBlazor) {\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n _super.prototype.destroy.call(this);\n }\n else {\n this.uploadWrapper = null;\n }\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n * @param { FileInfo | FileInfo[] } files - specifies the files data for upload.\n * @returns void\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n }\n else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (isBlazor()) {\n _this.currentRequestHeader = eventArgs.currentRequest ? eventArgs.currentRequest : _this.currentRequestHeader;\n _this.customFormDatas = (eventArgs.customFormData && eventArgs.customFormData.length > 0) ?\n eventArgs.customFormData : _this.customFormDatas;\n }\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n // tslint:disable-next-line\n reader.onload = (function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n /* istanbul ignore next */\n Uploader.prototype.getFileInfo = function (index, ele) {\n var files = this.filesData;\n if (!files || files.length === 0) {\n return null;\n }\n var file = files[index];\n if (!file) {\n return null;\n }\n return this.filesData[index];\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var _this = this;\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('GetFileDetails', files);\n }\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n var _loop_5 = function (i) {\n if (this_3.isServerBlazor && !this_3.checkChunkUpload()) {\n /* istanbul ignore next */\n /* tslint:disable */\n if (selectedFiles[i] && selectedFiles[i].rawFile instanceof File) {\n this_3.getBase64(selectedFiles[i].rawFile).then(function (data) {\n _this.base64String.push(data);\n _this.uploadFilesRequest(selectedFiles, i, custom);\n });\n }\n /* tslint:disable */\n }\n else {\n this_3.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n var this_3 = this;\n for (var i = 0; i < selectedFiles.length; i++) {\n _loop_5(i);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var cloneFiles = [];\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var getFileData;\n /* istanbul ignore next */\n if (this.isServerBlazor) {\n getFileData = selectedFiles.slice(0);\n cloneFiles.push(getFileData[i].rawFile);\n }\n var eventArgs = {\n fileData: (this.isServerBlazor) ? getFileData[i] : selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n /* istanbul ignore next */\n if (isBlazor()) {\n eventArgs.fileData.rawFile = !chunkEnabled ? _this.base64String[i] : eventArgs.fileData.rawFile;\n if (_this.currentRequestHeader) {\n _this.updateCustomheader(ajax.httpRequest, _this.currentRequestHeader);\n }\n if (_this.customFormDatas) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n }\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (_this.isServerBlazor && !chunkEnabled) {\n selectedFiles[i].rawFile = eventArgs.fileData.rawFile = cloneFiles[i];\n }\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_5 = this.element.getAttribute('name');\n formData.append(name_5, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel && _this.isServerBlazor) {\n return {};\n }\n else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel && _this.isServerBlazor) {\n return {};\n }\n else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) { _this.uploadFailed(e, selectedFiles[i]); return {}; };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n var endIndex = (startIndex + nameElements) - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns void\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (isBlazor()) {\n _this.currentRequestHeader = beforeEventArgs.currentRequest;\n _this.customFormDatas = beforeEventArgs.customFormData;\n }\n var index = void 0;\n if (_this.isFormUpload() && !_this.isBlazorSaveUrl) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')\n && !_this.isBlazorSaveUrl) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n }\n else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n var _loop_6 = function (files) {\n index = _this.filesData.indexOf(files);\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || (files.statusCode === '0' &&\n fileUploadedIndex !== -1)) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_6(files);\n }\n }\n }\n });\n };\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n * @returns void\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent) && !(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /**\n * Get the data of files which are shown in file list.\n * @param { number } index - specifies the file list item(li) index.\n * @returns FileInfo[]\n */\n Uploader.prototype.getFilesData = function (index) {\n if (!this.isServerBlazor) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n }\n else {\n for (var i = 0; i < this.filesData.length; i++) {\n this.filesData[i].rawFile = this.base64String[i];\n }\n return this.filesData;\n }\n };\n /**\n * Pauses the in-progress chunked upload based on the file data.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns void\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns void\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @returns void\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns void\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n };\n __decorate([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\nexport { Uploader };\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 Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar FilesDirective = /** @class */ (function (_super) {\n __extends(FilesDirective, _super);\n function FilesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilesDirective.prototype.render = function () {\n return;\n };\n FilesDirective = __decorate([\n EJComponentDecorator({})\n ], FilesDirective);\n return FilesDirective;\n}(Vue));\nexport { FilesDirective };\nexport var FilesPlugin = {\n name: 'e-files',\n install: function (Vue) {\n Vue.component(FilesPlugin.name, FilesDirective);\n }\n};\n/**\n * 'files' directive represent a file of vue uploader\n * It must be contained in a Uploader component(`ejs-uploader`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar UploadedFilesDirective = /** @class */ (function (_super) {\n __extends(UploadedFilesDirective, _super);\n function UploadedFilesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UploadedFilesDirective.prototype.render = function () {\n return;\n };\n UploadedFilesDirective = __decorate([\n EJComponentDecorator({})\n ], UploadedFilesDirective);\n return UploadedFilesDirective;\n}(Vue));\nexport { UploadedFilesDirective };\nexport var UploadedFilesPlugin = {\n name: 'e-uploadedfiles',\n install: function (Vue) {\n Vue.component(UploadedFilesPlugin.name, UploadedFilesDirective);\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 { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { FilesDirective, UploadedFilesDirective, FilesPlugin, UploadedFilesPlugin } from './files.directive';\nexport var properties = ['allowedExtensions', 'asyncSettings', 'autoUpload', 'buttons', 'cssClass', 'directoryUpload', 'dropArea', 'dropEffect', 'enablePersistence', 'enableRtl', 'enabled', 'files', 'htmlAttributes', 'locale', 'maxFileSize', 'minFileSize', 'multiple', 'sequentialUpload', 'showFileList', 'template', 'actionComplete', 'beforeRemove', 'beforeUpload', 'canceling', 'change', 'chunkFailure', 'chunkSuccess', 'chunkUploading', 'clearing', 'created', 'failure', 'fileListRendering', 'pausing', 'progress', 'removing', 'rendering', 'resuming', 'selected', 'success', 'uploading'];\nexport var modelProps = [];\n/**\n * Represents the Essential JS 2 VueJS Uploader Component\n * ```html\n * \n * ```\n */\nvar UploaderComponent = /** @class */ (function (_super) {\n __extends(UploaderComponent, _super);\n function UploaderComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = false;\n _this.tagMapper = { \"e-files\": \"e-uploadedfiles\" };\n _this.tagNameMapper = {};\n _this.ej2Instances = new Uploader({});\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n UploaderComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\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 _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n UploaderComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n UploaderComponent.prototype.bytesToSize = function (bytes) {\n return this.ej2Instances.bytesToSize(bytes);\n };\n UploaderComponent.prototype.cancel = function (fileData) {\n return this.ej2Instances.cancel(fileData);\n };\n UploaderComponent.prototype.clearAll = function () {\n return this.ej2Instances.clearAll();\n };\n UploaderComponent.prototype.createFileList = function (fileData, isSelectedFile) {\n return this.ej2Instances.createFileList(fileData, isSelectedFile);\n };\n UploaderComponent.prototype.getFilesData = function (index) {\n return this.ej2Instances.getFilesData(index);\n };\n UploaderComponent.prototype.pause = function (fileData, custom) {\n return this.ej2Instances.pause(fileData, custom);\n };\n UploaderComponent.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n return this.ej2Instances.remove(fileData, customTemplate, removeDirectly, postRawFile, args);\n };\n UploaderComponent.prototype.resume = function (fileData, custom) {\n return this.ej2Instances.resume(fileData, custom);\n };\n UploaderComponent.prototype.retry = function (fileData, fromcanceledStage, custom) {\n return this.ej2Instances.retry(fileData, fromcanceledStage, custom);\n };\n UploaderComponent.prototype.sortFileList = function (filesData) {\n return this.ej2Instances.sortFileList(filesData);\n };\n UploaderComponent.prototype.traverseFileTree = function (item, event) {\n return this.ej2Instances.traverseFileTree(item, event);\n };\n UploaderComponent.prototype.upload = function (files, custom) {\n return this.ej2Instances.upload(files, custom);\n };\n UploaderComponent = __decorate([\n EJComponentDecorator({\n props: properties\n })\n ], UploaderComponent);\n return UploaderComponent;\n}(ComponentBase));\nexport { UploaderComponent };\nexport var UploaderPlugin = {\n name: 'ejs-uploader',\n install: function (Vue) {\n Vue.component(UploaderPlugin.name, UploaderComponent);\n Vue.component(UploadedFilesPlugin.name, UploadedFilesDirective);\n Vue.component(FilesPlugin.name, FilesDirective);\n }\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticStyle:{\"padding\":\"10px\",\"position\":\"absolute\"},attrs:{\"id\":\"dialog\"}},[_c('products-form',{attrs:{\"showing\":_vm.dlgShow,\"formAction\":_vm.formAction,\"isMobile\":_vm.isMobile,\"formData\":_vm.rowData},on:{\"formClosed\":_vm.hideForm}})],1),_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-8 offset-xl-2\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"load\":_vm.onGridLoad,\"toolbarClick\":_vm.toolbar_click,\"actionBegin\":_vm.onActionBegin,\"actionComplete\":_vm.onActionComplete,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.gridData,\"query\":_vm.query,\"allowSorting\":true,\"allowSelection\":true,\"allowExcelExport\":true,\"selectionSettings\":_vm.selectionSettings,\"allowFiltering\":true,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"editSettings\":_vm.editSettings,\"filterSettings\":_vm.filterSettings,\"queryCellInfo\":_vm.setStyle,\"locale\":\"es-CO\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"headerText\":\"Id Karin\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"Clip\",\"isPrimaryKey\":true}}),_c('e-column',{attrs:{\"field\":\"localCode\",\"headerText\":\"Código Core\",\"textAlign\":\"Right\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\",\"isPrimaryKey\":false}}),_c('e-column',{attrs:{\"field\":\"name\",\"headerText\":\"Producto\",\"filter\":\"Menu\",\"width\":200,\"clipMode\":\"EllipsisWithTooltip\",\"required\":true}}),_c('e-column',{attrs:{\"field\":\"insuranceLineId\",\"headerText\":\"Id Ramo\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\",\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"insuranceLineName\",\"headerText\":\"Ramo\",\"width\":90,\"minWidth\":90,\"clipMode\":\"EllipsisWithTooltip\"}}),_c('e-column',{attrs:{\"field\":\"isActive\",\"headerText\":\"isActive\",\"width\":90,\"required\":true,\"visible\":false}}),_c('e-column',{attrs:{\"field\":\"active\",\"headerText\":\"Activo\",\"width\":90,\"filter\":\"CheckBox\",\"required\":true,\"visible\":\"true\"}}),_c('e-column',{attrs:{\"headerText\":\"Acciones\",\"AllowFiltering\":\"false\",\"width\":100,\"commands\":_vm.commands}})],1)],1)],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Productos\")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"products-form\",\"isModal\":true,\"visible\":_vm.showing,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":true,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"z-index\":\"1003\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"e-text\",class:{ 'e-warning': _vm.hasError('id') }},[_vm._v(\"Id Karin\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.id),expression:\"m_data.id\"}],staticClass:\"e-input\",attrs:{\"id\":\"id\",\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":(_vm.m_data.id)},on:{\"blur\":function($event){return _vm.validateField('id')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"id\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Código Core\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.localCode),expression:\"m_data.localCode\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('localCode') },attrs:{\"id\":\"localCode\",\"name\":\"localCode\",\"type\":\"text\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Código Core\"},domProps:{\"value\":(_vm.m_data.localCode)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"localCode\", $event.target.value)},function($event){return _vm.validateField('localCode')}],\"blur\":function($event){return _vm.validateField('localCode')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('localCode') },domProps:{\"textContent\":_vm._s(_vm.m_errors.localCode)}})]),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6\"},[_c('div',[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"insuranceLineId\"}},[_vm._v(\"Ramo\")]),_c('ejs-dropdownlist',{ref:\"lineDropDown\",attrs:{\"id\":\"insuranceLineId\",\"dataSource\":_vm.insuranceLinesList,\"fields\":_vm.fields,\"showClearButton\":true,\"value\":_vm.m_data.insuranceLineId,\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Ramo\",\"cssClass\":_vm.hasError('insuranceLineId') ? 'e-warning' : ''},on:{\"change\":function($event){return _vm.validateField('insuranceLineId')},\"blur\":function($event){return _vm.validateField('insuranceLineId')}},model:{value:(_vm.m_data.insuranceLineId),callback:function ($$v) {_vm.$set(_vm.m_data, \"insuranceLineId\", $$v)},expression:\"m_data.insuranceLineId\"}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('insuranceLineId') },domProps:{\"textContent\":_vm._s(_vm.m_errors.insuranceLineId)}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Nombre Producto\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.name),expression:\"m_data.name\"}],staticClass:\"e-input\",class:{ 'e-warning': _vm.hasError('name') },attrs:{\"id\":\"name\",\"type\":\"text\",\"required\":\"\",\"readonly\":_vm.isFormReadOnly,\"placeholder\":\"Nombre Producto\"},domProps:{\"value\":(_vm.m_data.name)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"name\", $event.target.value)},function($event){return _vm.validateField('name')}],\"blur\":function($event){return _vm.validateField('name')}}}),_c('span',{staticClass:\"help e-text small\",class:{ 'e-warning': _vm.hasError('name') },domProps:{\"textContent\":_vm._s(_vm.m_errors.name)}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showId),expression:\"showId\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-6 col-md-6 control-section switch-control\"},[_c('div',[_c('ejs-switch',{attrs:{\"cssClass\":\"align-middle\",\"id\":\"isActive\",\"checked\":_vm.m_data.isActive,\"disabled\":_vm.isFormReadOnly || !_vm.canDelete},model:{value:(_vm.m_data.isActive),callback:function ($$v) {_vm.$set(_vm.m_data, \"isActive\", $$v)},expression:\"m_data.isActive\"}}),_c('label',{staticClass:\"e-text align-middle switch-label\",attrs:{\"for\":\"isActive\"}},[_vm._v(_vm._s(_vm.m_data.isActive ? \"Activo\" : \"Inactivo\"))])],1)])]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.validateForm($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),(_vm.showDeleteButton)?_c('ejs-button',{attrs:{\"isDanger\":true,\"iconCss\":\"e-icons icon-trash inline-command\",\"cssClass\":\"e-flat e-danger e-noback\"},nativeOn:{\"click\":function($event){return _vm.validateDelete($event)}}},[_vm._v(\"Desactivar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductsForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductsForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductsForm.vue?vue&type=template&id=4ce7cb2a&\"\nimport script from \"./ProductsForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductsForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProductsForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Products.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Products.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Products.vue?vue&type=template&id=8ae62032&\"\nimport script from \"./Products.vue?vue&type=script&lang=js&\"\nexport * from \"./Products.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Products.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestConsult.vue?vue&type=style&index=0&lang=css&\"","import { EventHandler, detach, formatUnit, Browser, closest, isBlazor, extend } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, gridActionHandler, Global } from '../base/util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\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 * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\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 * @param {string|string[]} fName - Defines the field name.\n * @return {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.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 /* tslint:disable-next-line:max-func-body-length */\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable;\n var contentTable;\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = 'e-gridcontent';\n var footerDivTag = 'e-gridfooter';\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone;\n var contentTextClone;\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n var left = gObj.getFrozenColumns() || gObj.getFrozenLeftColumnsCount();\n var movable = gObj.getMovableColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n var col = gObj.getColumnByField(fName);\n if (col.getFreezeTableName() === 'frozen-left') {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === 'movable') {\n headerTable = gObj.getHeaderContent().querySelector('.e-movableheader').children[0];\n contentTable = gObj.getContent().querySelector('.e-movablecontent').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n }\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n }\n var indentWidthClone = headerTable.querySelector('tr').querySelectorAll('.e-grouptopleftcell');\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[i].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[i] = footerTextClone[i].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[i] = contentTextClone[i].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wContent = this.createTable(contentTable, contentText, contentDivTag);\n var wFooter = null;\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[columnIndexByField];\n var result;\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()[columnIndexByField]);\n result = gObj.getColumns().some(function (x) { return x.width === null || 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[i].visible) {\n tWidth = tWidth + parseFloat(element[i].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0 && !gObj.isFrozenGrid()) {\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 var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n headerTable.classList.add('e-tableborder');\n contentTable.classList.add('e-tableborder');\n }\n else {\n headerTable.classList.remove('e-tableborder');\n contentTable.classList.remove('e-tableborder');\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n * @return {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-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 * @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[i];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[columnIndex];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n };\n /**\n * To create table for autofit\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n myTableDiv.className = this.parent.element.className;\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');\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[i]);\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 * @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.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n };\n /**\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.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n };\n /**\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[i].parentElement.offsetHeight > 0) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\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 this.parent.isFrozenGrid() ?\n [].slice.call(this.parent.getHeaderContent().querySelectorAll('.' + resizeClassList.root))\n : [].slice.call(this.parent.getHeaderTable().querySelectorAll('.' + resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().querySelectorAll('.' + resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[i].style.height = element[i].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 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 }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n if (this.parent.getVisibleFrozenColumns()) {\n var mtbody = this.parent.getMovableContentTbody();\n var ftbody = this.parent.getFrozenLeftContentTbody();\n var frtbody = this.parent.getFrozenRightContentTbody();\n var mtr = [].slice.call(mtbody.querySelectorAll('tr'));\n var ftr = [].slice.call(ftbody.querySelectorAll('tr'));\n var frTr = [];\n if (this.parent.getFrozenMode() === 'Left-Right' && frtbody) {\n frTr = [].slice.call(frtbody.querySelectorAll('tr'));\n }\n var _loop_1 = function (i) {\n gridActionHandler(this_1.parent, function (tableName, row) {\n if (_this.parent.rowHeight) {\n row[i].style.height = _this.parent.rowHeight + 'px';\n }\n else {\n row[i].style.removeProperty('height');\n }\n }, [ftr, mtr, frTr]);\n };\n var this_1 = this;\n for (var i = 0; i < mtr.length; i++) {\n _loop_1(i);\n }\n }\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() === 'frozen-right') {\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 = void 0;\n if (!isBlazor() || this.parent.isJsComponent) {\n args = { e: e, column: this.column };\n }\n else {\n var clonedColumn = extend({}, this.column);\n args = { column: clonedColumn };\n }\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().querySelectorAll('.e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[i].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.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\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 if (this.column.getFreezeTableName() === 'frozen-right') {\n mousemove = this.parent.enableRtl ? (pageX - this.pageX) : (this.pageX - pageX);\n }\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.column.getFreezeTableName() === 'frozen-right') {\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 }\n if ((this.column.getFreezeTableName() !== 'frozen-right'\n && ((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX)))\n || (this.column.getFreezeTableName() === 'frozen-right' && ((this.parent.enableRtl && this.minMove >= pageX)\n || (!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 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.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[i].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 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;\n if (!isBlazor() || this.parent.isJsComponent) {\n args = { e: e, column: this.column };\n }\n else {\n var clonedColumn = extend({}, this.column);\n args = { column: clonedColumn };\n }\n var content = this.parent.getContent().querySelector('.e-content');\n var cTable = content.querySelector('.e-movablecontent') ? content.querySelector('.e-movablecontent') : 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 if (parentsUntil(this.element, 'e-frozenheader')) {\n this.isFrozenColResized = true;\n }\n else {\n this.isFrozenColResized = false;\n }\n if (this.parent.isFrozenGrid()) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\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 this.getStackedWidth(col, width);\n }\n else {\n width += col.width;\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 isFrozen = this.parent.isFrozenGrid();\n var height = isFrozen ? this.parent.getContent().querySelector('.e-content').offsetHeight\n : 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 var right = this.parent.getFrozenRightColumnsCount();\n if (isFrozen) {\n if (parentsUntil(rect, 'e-movableheader')) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-movableheader').querySelectorAll('tr'));\n }\n else if (right && parentsUntil(rect, 'e-frozen-right-header')) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelectorAll('tr'));\n }\n else {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelectorAll('tr'));\n }\n }\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[i].offsetHeight;\n }\n var pos = this.calcPos(rect);\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n pos.left += (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1);\n }\n else {\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n }\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\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 if (parentsUntil(rect, 'e-frozen-right-header')) {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1));\n }\n else {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n }\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n if (this.parent.isFrozenGrid()) {\n var table = closest(rect, '.e-table');\n var fLeft = table.offsetLeft;\n if (left < fLeft) {\n left = fLeft;\n }\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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./StatisticList.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_vm._m(0),_c('request-list',{attrs:{\"showing\":true,\"requestType\":_vm.requestType,\"gridColumns\":_vm.gridColumns}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Renovación de Solicitudes\")])])])}]\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Renovation.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Renovation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Renovation.vue?vue&type=template&id=8ac74362&\"\nimport script from \"./Renovation.vue?vue&type=script&lang=js&\"\nexport * from \"./Renovation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Renovation.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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:\"container-fluid\"},[_c('div',{staticStyle:{\"padding\":\"10px\",\"position\":\"absolute\"},attrs:{\"id\":\"dialog\"}},[_c('UsersProcessLinesForm',{attrs:{\"showing\":_vm.dlgShow,\"formAction\":_vm.formAction,\"isMobile\":_vm.isMobile,\"formData\":_vm.rowData},on:{\"formClosed\":_vm.hideForm}})],1),_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12\"},[_c('ejs-grid',{ref:\"gridObj\",staticClass:\"r-space\",attrs:{\"load\":_vm.onGridLoad,\"toolbarClick\":_vm.toolbar_click,\"actionBegin\":_vm.onActionBegin,\"actionComplete\":_vm.onActionComplete,\"toolbar\":_vm.toolbar,\"dataSource\":_vm.gridData,\"query\":_vm.query,\"allowSorting\":true,\"allowSelection\":true,\"allowExcelExport\":true,\"selectionSettings\":_vm.selectionSettings,\"allowFiltering\":true,\"allowPaging\":true,\"allowGrouping\":false,\"pageSettings\":_vm.pageSettings,\"editSettings\":_vm.editSettings,\"filterSettings\":_vm.filterSettings,\"dataBound\":_vm.dataBound,\"locale\":\"es-CO\",\"width\":\"100%\"}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"userFullName\",\"headerText\":\"Nombre Completo\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"300\"}}),_c('e-column',{attrs:{\"field\":\"userName\",\"headerText\":\"Usuario\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"100\"}}),_c('e-column',{attrs:{\"field\":\"macroLineString\",\"headerText\":\"Macro Ramos\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"100\"}}),_c('e-column',{attrs:{\"field\":\"lineString\",\"headerText\":\"Ramos\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"300\"}}),_c('e-column',{attrs:{\"field\":\"zonesString\",\"headerText\":\"Zonas\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"100\"}}),_c('e-column',{attrs:{\"field\":\"branchesString\",\"headerText\":\"Sucursales\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"300\"}}),_c('e-column',{attrs:{\"headerText\":\"Acciones\",\"AllowFiltering\":\"false\",\"clipMode\":\"EllipsisWithTooltip\",\"width\":\"128\",\"commands\":_vm.commands}})],1)],1)],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row top-row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(\"Asignaciones por Analista para Balanceo de Carga\")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ejs-dialog',{ref:\"formDialog\",staticClass:\"dialog-karin\",attrs:{\"id\":\"userProcessLines-form\",\"isModal\":true,\"visible\":_vm.showing,\"header\":_vm.header,\"width\":_vm.width,\"showCloseIcon\":false,\"close\":_vm.onDialogClose,\"open\":_vm.onDialogOpen,\"z-index\":\"1003\"}},[_c('div',{staticClass:\"col-lg-12 e-input-section\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-lg-12 col-md-12\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"e-text\"},[_vm._v(\"Analista\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.m_data.userName),expression:\"m_data.userName\"}],staticClass:\"e-input\",attrs:{\"id\":\"userName\",\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":(_vm.m_data.userName)},on:{\"blur\":function($event){return _vm.validateField('userName')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.m_data, \"userName\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-6 col-sm-6 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"macroLines\"}},[_vm._v(\"Macro Ramo\")]),_c('ejs-multiselect',{attrs:{\"id\":\"macroLines\",\"dataSource\":_vm.macroLinesList,\"placeholder\":\"Macro Ramo\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Macro Ramo\"},model:{value:(_vm.selected.macroLinesList),callback:function ($$v) {_vm.$set(_vm.selected, \"macroLinesList\", $$v)},expression:\"selected.macroLinesList\"}})],1),_c('div',{staticClass:\"col-xs-6 col-sm-6 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"insuranceLines\"}},[_vm._v(\"Ramo\")]),_c('ejs-multiselect',{attrs:{\"id\":\"insuranceLines\",\"dataSource\":_vm.insuranceLinesList,\"placeholder\":\"Ramo\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Ramo\"},model:{value:(_vm.selected.insuranceLinesList),callback:function ($$v) {_vm.$set(_vm.selected, \"insuranceLinesList\", $$v)},expression:\"selected.insuranceLinesList\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-6 col-sm-6 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"zones\"}},[_vm._v(\"Zonas\")]),_c('ejs-multiselect',{attrs:{\"id\":\"zones\",\"dataSource\":_vm.zonesList,\"placeholder\":\"Zonas\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Zona\"},model:{value:(_vm.selected.zonesList),callback:function ($$v) {_vm.$set(_vm.selected, \"zonesList\", $$v)},expression:\"selected.zonesList\"}})],1),_c('div',{staticClass:\"col-xs-6 col-sm-6 col-md-6 col-lg-6\"},[_c('label',{staticClass:\"e-text\",attrs:{\"for\":\"branchesOffice\"}},[_vm._v(\"Sucursales\")]),_c('ejs-multiselect',{attrs:{\"id\":\"branchesOffice\",\"dataSource\":_vm.branchesOfficeList,\"placeholder\":\"Sucursal\",\"fields\":_vm.fields,\"mode\":\"CheckBox\",\"showDropDownIcon\":true,\"showSelectAll\":true,\"enableSelectionOrder\":true,\"filterBarPlaceholder\":\"Buscar Sucursal\"},model:{value:(_vm.selected.branchesOfficeList),callback:function ($$v) {_vm.$set(_vm.selected, \"branchesOfficeList\", $$v)},expression:\"selected.branchesOfficeList\"}})],1)]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row pull-right\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12\"},[_c('div',{staticClass:\"e-btn-group\"},[(_vm.showSaveButton)?_c('ejs-button',{attrs:{\"isPrimary\":true,\"iconCss\":\"e-icons icon-save inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.saveData($event)}}},[_vm._v(\"Grabar\")]):_vm._e(),_c('ejs-button',{attrs:{\"iconCss\":\"e-icons icon-cancel inline-command\",\"cssClass\":\"e-flat e-noback\"},nativeOn:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Cancelar\")])],1)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersProcessLinesForm.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersProcessLinesForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UsersProcessLinesForm.vue?vue&type=template&id=50b151a6&\"\nimport script from \"./UsersProcessLinesForm.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersProcessLinesForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersProcessLinesForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersProcessLines.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersProcessLines.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UsersProcessLines.vue?vue&type=template&id=04851af0&\"\nimport script from \"./UsersProcessLines.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersProcessLines.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersProcessLines.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessForm.vue?vue&type=style&index=0&lang=css&\""],"sourceRoot":""}