{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","webpack:///./src/views/ui-elements/FAMSUI/SAPView.vue","webpack:///src/views/ui-elements/FAMSUI/SAPView.vue","webpack:///./src/views/ui-elements/FAMSUI/SAPView.vue?4c58","webpack:///./src/views/ui-elements/FAMSUI/SAPView.vue?7cb7","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/@syncfusion/ej2-data/src/query.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./src/views/ui-elements/FAMSUI/SAPView.vue?ee3e","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/detail-row.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","webpack:///./node_modules/@syncfusion/ej2-data/src/manager.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/position.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/column.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/row.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/image.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/zip-archive.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/workbook.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./src/views/ui-elements/FAMSUI/SAPView.vue?0a4d","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/util.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/observer.js","webpack:///./node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/ajax.js","webpack:///./node_modules/@syncfusion/ej2-base/src/browser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack:///./node_modules/@syncfusion/ej2-base/src/template.js","webpack:///./node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack:///./node_modules/@syncfusion/ej2-base/src/virtual-dom.js","webpack:///./node_modules/@syncfusion/ej2-base/src/dom.js","webpack:///./node_modules/@syncfusion/ej2-base/src/base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack:///./node_modules/@syncfusion/ej2-base/src/animation.js","webpack:///./node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack:///./node_modules/@syncfusion/ej2-base/src/component.js","webpack:///./node_modules/@syncfusion/ej2-base/src/child-property.js","webpack:///./node_modules/@syncfusion/ej2-base/src/draggable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/droppable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack:///./node_modules/@syncfusion/ej2-base/src/l10n.js","webpack:///./node_modules/@syncfusion/ej2-base/src/touch.js","webpack:///./node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack:///./node_modules/@syncfusion/ej2-base/index.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/blazor-action.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","webpack:///./node_modules/@syncfusion/ej2-lists/src/common/list-base.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/vuejs-timepicker/dist/vue2-timepicker.min.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/component-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/component-decorator.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/template.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/popup/popup.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-data/src/util.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","consts","GroupGuid","Adaptor","ds","options","from","requestType","sortBy","select","skip","group","take","search","count","where","aggregates","expand","type","dataSource","pvt","processResponse","data","query","xhr","JsonAdaptor","_super","apply","arguments","processQuery","dataManager","ret","key","page","result","json","slice","length","countFlg","lazyLoad","keyCount","i","value","agg","queries","fn","call","e","field","undefined","push","args","lazyLoadData","lazyLoadGroup","isCountRequired","getAggregate","onDemandGroupInfo","fieldName","comparer","onPage","formGroupResult","req","onWhere","level","uid","childLevel","records","aggQuery","filterQueries","tmp","getValue","batchRequest","dm","changes","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","remove","filter","obj","validate","onAggregates","onSearch","fieldNames","getFieldList","j","getObject","searchKey","ignoreCase","ignoreAccent","onSortBy","fnCompare","sort","endsWith","fnSort","replace","onGroup","size","pageSize","start","pageIndex","end","onRange","onTake","nos","onSkip","onSelect","tableName","position","splice","keyField","Date","UrlAdaptor","hierarchyFilters","temp","getQueryRequest","singles","filterQueryLists","params","url","request","sorts","groups","filters","searches","callAdaptorFunction","name","direction","getFiltersFrom","toJson","keys_3","keys","_i","keys_1","prop","isNull","fields","operator","getRequestQuery","reqParams","_a","keys_2","JSON","stringify","parse","jsonDateReplacer","pvtData","contentType","convertToQueryString","indexOf","request1","param","fromTable","distincts","selects","expands","getResponseHeader","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","action","isExpand","isArray","val","formRemoteGroupedData","getAggregateResult","items","childLvl","lvl","getGroupedRecords","hasRecords","childGroupedRecords","concat","original","batchUrl","crudUrl","removeUrl","dataType","changed","added","deleted","table","getAddParams","beforeSend","insertUrl","keyColumn","updateUrl","fKey","pKey","predicats","or","pData","aggregateData","res","aggregate","isServerGrouping","groupQuery","addParams","Error","ODataAdaptor","props","_this","accept","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","getModuleName","onPredicate","predicate","requiresCast","guid","returnValue","getField","replacer","encodeURIComponent","isGuid","toLowerCase","odBiOperator","odUniOperator","odv4UniOperator","onComplexPredicate","predicates","onEachWhere","join","condition","isComplex","onEachSearch","throwError","onEachSort","reverse","onCount","settings","setRequestHeader","overrideMimeType","metaCheck","rootUrl","dataUrls","split","resourceTableName","dataCopy","results","metaData","emptyAndBatch","processBatchResponse","versionCheck","version","parseInt","oDataCount","format","requiresFormat","keys_4","localTimeReplacer","convertObj","dateParse","toLocalTime","localTime","compareAndRemove","initialGuid","getGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","arr","stat","dateTime","toJSON","generateBodyContent","org","forEach","change","o","date","method","cIdx","jsonObj","substring","exVal","exec","changeGuid","test","isPlainObject","final","valueOf","RemoteSaveAdaptor","ODataV4Adaptor","isDate","onExpand","selected","expanded","exArr","item","splits","ex","onDistinct","distinctFields","map","metaName","dataUrl","dataCount","WebApiAdaptor","_loop_1","x","location","host","_loop_2","_loop_3","state","datTime","Count","Items","WebMethodAdaptor","getData","updateKey","urlParams","AjaxAdaptor","Function","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","adaptor","timeStamp","isCrudAction","isInsertAction","cacheAdaptor","guidId","window","localStorage","setItem","setInterval","getItem","forDel","currentTime","requestTime","removeItem","generateKey","currentFilter","newQuery","clone","cachedItems","index","crossDomain","globalTimeOut","spinTemplate","spinCSSClass","DEFT_MAT_WIDTH","DEFT_FAB_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_FABRICSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","createSpinner","internalCreateElement","target","radius","makeElement","container","create_spinner_container","cssClass","wrap","classList","add","template","theme","getTheme","width","calculateRadius","setTheme","label","createLabel","inner_wrap","replaceContent","labelEle","textContent","appendChild","createMaterialSpinner","uniqueID","random_generator","timeOut","create_material_element","mat_calculate_attributes","createBootstrap4Spinner","startMatAnimate","globalObject","timeOutVar","globalVariables","spinnerInfo","globalInfo","animateMaterial","createFabricSpinner","create_fabric_element","fb_calculate_attributes","createHighContrastSpinner","getComputedStyle","getPropertyValue","innerContainer","querySelector","svg","removeChild","createBootstrapSpinner","create_bootstrap_element","boot_calculate_attributes","svgBoot","document","createElementNS","viewBoxValue","trans","defaultRadius","setAttribute","insertBefore","firstChild","bootCircle","style","height","y","rad","startArc","defineArcPoints","circleEle","generateSeries","begin","stop","series","increment","formSeries","parseFloat","toFixed","animateBootstrap","id","getAttribute","getElementsByClassName","rotation","circle","boot_animate","isAnimate","setTimeout","bind","inner","innerHTML","defaultSize","previousId","random","combine","charAt","Math","floor","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","cls","svgMaterial","matCirclePath","spinnerContainer","spinnerInnerContainer","duration","max","createCircle","easeAnimation","easing","startTime","getTime","diameter","getSize","strokeSize","getStrokeSize","rotate","mat_animation","min","updatePath","path","getDashOffset","transformOrigin","drawArc","PI","parsed","offset","current","timestamp","timecount","innerConainer","trgClass","centerX","centerY","endArc","defineCircle","defineArc","angle","radians","cos","sin","showSpinner","showHideSpinner","isHide","spinnerWrap","contains","spinCheck","svgEle","clearTimeout","hideSpinner","render","_vm","_c","_self","staticStyle","model","activeTab","callback","$$v","expression","staticClass","attrs","on","closeCardAnimationDemo","_v","directives","rawName","formData","fromDate","$set","errors","has","_s","first","toDate","fromTime","toTime","productsDropdown","selectedProduct","storeDropdown","selectedStore","ref","$event","GetGridSimple","isVisible","staticRenderFns","Vue","use","VueTimepicker","GridPlugin","Grid","Inject","Sort","Page","Toolbar","Aggregate","ExcelExport","PdfExport","DetailRow","Search","aggregateColumn","toolbar","pageSettings","pageCount","grid","flag","SimpleDetailGrid","queryString","pid","columns","columnsSelecteds","activePrompt","activePromptSubGrid","fileName","formats","cellAutoWidth","selectedFormat","headerTitle","headerVal","selectedAccount","accountDropdown","componentKey","famsDBDataChild","famsDBData","isMounted","store","HH","mm","ss","selectionOptions","mode","localColforGrid","localColforGridChild","DetialUsageReceiveFAMS","sapData","headerText","textAlign","visible","disableHtmlEncode","provide","Group","Selection","Reorder","components","flatPickr","vSelect","Datepicker","computed","currentPage","$refs","gridTable","currentx","watch","self","clearFields","getFullYear","getMonth","GeStoresDropdown","GetProductsDropdown","mounted","methods","populateStore","onSuccess","response","onFinally","$ajaxGet","populateData","element","getElementById","newElement","createElement","alert","isActive","formatDate","pad","accountid","firstArray","GetAccountsDropdown","dateFormat","month","year","day","getDate","forceRerender","formatJson","filterVal","jsonData","v","filename","card","removeRefreshAnimation","pdfExportComplete","excelExportComplete","toolbarClick","_toolbarClick","_asyncToGenerator","regeneratorRuntime","mark","_callee","_context","prev","next","t0","text","exportToTxt","abrupt","pdfExport","pageOrientation","excelExport","csvExport","_x","sumTemplate","component","storeID","productID","showLoadingOnElement","footerTemplate","allowSorting","allowPaging","allowExcelExport","allowPdfExport","scrollSettings","PageSettings","appendTo","refresh","$vs","loading","close","submit","$el","successNotifyGridExpanded","notify","title","color","successNotifyDataLoad","successNotify","FailedNotify","scale","gridData","getCurrentViewRecords","txtData","convertToTxt","blob","Blob","link","href","URL","createObjectURL","download","click","sap","parent","groupSettings","sortedColumns","serviceLocator","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","visualElement","className","styles","helper","gObj","sender","allowReordering","column","getColumnByField","firstElementChild","offsetWidth","offsetHeight","dragStart","bindEvents","dragElement","drag","animateDropper","cloneElement","trigger","draggableType","dragStop","preventDrop","rearrangeGroup","getColumnByUid","ungroupColumn","dragField","dropTarget","grouped","querySelectorAll","cols","dropField","dropIndex","dragIndex","c","addColToGroupDrop","addLabel","removeColFromGroupDrop","drop","droppedElement","aria","setDropTarget","setGrabbed","getHeaderTable","allowGrouping","getColumnHeaderByUid","log","moduleName","columnName","groupColumn","contentRefresh","focus","getService","addEventListener","groupGenerator","dragLabel","l10n","getConstant","updateModel","columnDrag","columnDragStart","dropArea","columnDrop","isDestroyed","enableAfterRender","onActionComplete","onPropertyChanged","clickHandler","refreshSortIcons","keyPressHandler","initialEnd","onGroupAggregates","blazorActionBegin","updateExpand","removeEventListener","off","isCollapseStateEnabled","expandAll","isServerRendered","updateGroupDropArea","getColumns","col","preventDefault","allowSelection","getSelectedRowIndexes","rows","getContentTable","children","dataRow","getDataRows","grpRow","rowIndex","expandCollapseRows","collapseAll","isEdit","getFocusedElement","row","parentElement","elem","focusModule","currentInfo","applySortFromTarget","unGroupFromTarget","toogleGroupFromHeader","showToggleButton","gHeader","getColumnHeaderByField","sortColumn","trgt","cellIdx","cellIndex","rowIdx","rowNodes","expandElem","toExpand","indent","updateVirtualRows","enableLazyLoading","contentModule","captionExpand","captionCollapse","setExpand","len","display","updateVisibleexpandCollapseRows","getRowsObject","isDataRow","getRowElementByUID","rObj","getRowObjectFromUID","closest","getDataModule","generateQuery","aggregateQuery","getQuery","rowObject","requiresCount","then","renderModule","dataManagerSuccess","expandCollapse","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","showDropArea","clear","initializeGHeaderDrop","initializeGHeaderDrag","dragTarget","distance","instance","handler","arg1","showGroupedColumn","colName","enableColumnVirtualization","setVisible","sortSettings","dataBind","groupAddSortingQuery","isJsComponent","isFromGroup","animator","groupedColumn","childDiv","headerCell","tabindex","showUngroupButton","createSeparator","toString","isRemove","headers","showColumnMenu","getGHeaderCell","parent_1","module","properties","oldProperties","refreshHeader","updateGroupedColumn","updateButtonVisibility","freezeRefresh","enable","destroy","gridElement","refreshing","clearGrouping","header","gCols","editedData","iterateGroupAggregates","rowData","generateRows","summaryRows","updateSummaryRows","isReact","destroyTemplate","cells","cell","isDataCell","dataUid","updatedData","initData","deletedCols","changeds","edit","getPrimaryKeyFieldNames","mergeData","pKeyVal","hasVal","some","cItem","eData","aggrds","aggregateRows","k","aggr","groupedCols","l","childRow","closestParent","parentUid","state_1","isFrozen","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","Uint8Array","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","Uint16Array","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","defineProperty","get","enumerable","configurable","compressedString","String","fromCharCode","write","encode","getBytes","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","s","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","set","subarray","updateHash","m","match","hash","curMatch","chainLen","niceLen","scan","bestEnd","bestLength","limit","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","code","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","uint","Uint32Array","pendingBufferFlushBits","isClose","array","bitReverse","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","n","freq","pos","pPos","leafsCount","nodesCount","child","values","node","iIndex","constructHuffmanTree","buildLength","last","lastVal","second","minDepth","numNodes","numLeafs","overflow","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","Query","subQuery","isChild","lookups","groupedColumns","setKey","using","execute","done","fail","always","executeQuery","executeLocal","cloned","subQuerySelector","distinct","tables","Predicate","fnOperators","sortByForeignKey","order","sortByDesc","range","hierarchy","selectorFn","foreignKey","q","filtered","processOperator","and","combinePredicates","fromJson","fromJSONData","pred","record","isAnd","preds","CheckBoxFilterBase","existingPredicate","foreignKeyQuery","filterState","renderEmpty","valueFormatter","locale","cBoxTrue","checked","cBoxFalse","enableRtl","closeDialog","wireEvents","dlg","keyupHandler","searchHandler","searchBoxKeyUp","dialogObj","unWireEvents","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","columnData","ejpredicate","fpred","matchCase","foreignFilter","isRemote","initalPredicate","foreignKeyValue","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","localeObj","updateDataSource","str","actualPredicate","filteredColumns","filterSettings","allowCaseSensitive","isFiltered","getAndSetChkElem","sBox","hideSearchbox","searchBox","inputargs","floatLabelType","placeholder","createInput","spinner","cBox","showDialog","columnType","cancel","filterModel","content","animationSettings","effect","buttons","btnClick","buttonModel","isExcel","isPrimary","created","dialogCreated","open","dialogOpen","isStringTemplate","renderResponsiveFilter","isResponsiveFilter","responsiveCnt","maxHeight","show","getAllData","X","Y","left","isDevice","openDialog","filterTemplateCol","getFilterItemTemplate","registeredTemplate","filterItemTemplate","renderTemplates","clearFilter","tagName","isForeignColumn","keyCode","fltrBtnHandler","check","optr","ddlValue","ej2_instances","isMenuNotEqual","fObj","searchInput","caseSen","defaults","isNotEqual","itemsCnt","coll","generateNullValuePredicates","arg2","arg3","arg4","arg5","arg6","initiateFilter","firstVal","foreignQuery","predicte","fromView","parserFn","addDistinct","filterChoiceCount","filterargs","excelSearchOperator","filterObj","colData","filterEvent","processSearch","getPredicateFromCols","getPredicate","predicateList","isGrid","getForeignKeyColumns","foreignColumn","processDataOperation","filteredColumn","defObj","def","deffered","promise","dataSuccess","isInitial","allPromise","runArray","foreignKeyData","Promise","all","fullData","args1","searchSettings","sSettings","f","filterColumn","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","result_1","selectAll","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes","cBoxes_1","previousSibling","createCheckbox","cloneNode","dummyData","isReactCompiler","btn","cnt","disabled","btnObj","input","indeterminate","nullCounter","selectAllValue","checkBox","isColFiltered","isRndere","formatFn","toView","args_1","checkbox","getCheckedState","checkState","ejValue","lookup","isForeignKey","foreignDataObj","fnAscending","collection","generatePredicate","operate","updateDateFilter","getCaseValue","Data","dataState","isPending","resolver","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","toIndex","fromIndex","isAngular","isQueryInvokedFromData","setProperties","skipPage","columnQueryMode","isPrimaryKey","selectQueryFields","filterQuery","searchQuery","sortQuery","virtualGroupPageQuery","pageQuery","isForeign","types","fName","enableVirtualization","enableInfiniteScrolling","infiniteScrollModule","isGrpFmt","enableGroupByFormat","formatGroupColumn","sortGrp","setSortDirection","sortComparer","getSortDirection","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","allowFiltering","colType","foreignCols","defaultFltrCols","_b","columns_1","gridColumn","grabColumnByFieldFromAllCols","excelPredicate","_d","_e","foreignCols_1","column_1","grabColumnByUidFromAllCols","_f","_g","getKey","eventPromise","crud","saveChanges","catch","ready","deferred_1","resolve","reject","getDay","getHours","getMinutes","getSeconds","getMilliseconds","getFormatter","formatVal","pr","previousData","getStateEventArgument","deff","endEdit","setState","offline","getState","getForeignKeyDataState","setForeignKeyDataState","adaptr","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","locator","refreshColSpan","toogleExpandcollapse","childGrid","lastrowIdx","isExpanded","tr","rowObj","nextRow","isDetailRow","detailElement","getDetailTemplate","rowId","detailRow","detailCell","colSpan","getVisibleColumns","allowRowDragAndDrop","cellType","Indent","unshift","parentNode","nextSibling","detailTemplate","detailTemplateID","getGridModel","printMode","parentID","parentPrimaryKeys","parentKeyField","parentKeyFieldValue","parentRowData","isLegacyTemplate","isPrinting","promiseResolve","modules","getInjectedModules","injectedModues","setInjectedModules","gridElem","getRows","getContent","clientHeight","scrollHeight","detailrowIdx","childNodes","lastrowcell","gridModel","expandedRows","hierarchyPrintMode","getTDfromIndex","isNaN","collapse","moduleObj","td","detailrows","getTable","__decorate","decorators","desc","r","getOwnPropertyDescriptor","Reflect","decorate","Column","allowResizing","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","skeleton","setFormatter","getFormatFunction","setParser","getParserFunction","commands","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","itemTemplate","fltrTemplateFn","editTemplate","filterTemplate","foreignKeyField","a_1","xObj","yObj","z","fnDescending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","getParser","getColumnTemplate","getHeaderTemplate","getDomSetter","CommandColumnModel","Scroll","lastScrollTop","previousValues","top","oneTimeReady","widthService","setWidth","uiupdate","setWidthToColumns","toolbarModule","refreshOverflow","setHeight","mHdrHeight","isFrozenGrid","getScrollBarWidth","frozenRows","tbody","getHeaderContent","height_1","getRowHeight","ensureOverflow","setPadding","scrollWidth","getThreshold","cssProps","getCssProperties","padding","getFrozenMode","border","removePadding","rtl","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","info","setScrollLeft","headerModule","getMovableHeader","scrollLeft","onFrozenContentScroll","isPreventScrollEvent","scrollTop","onContentScroll","scrollTarget","isHeader","isLeft","isDown","scrollDown","isFooter","onCustomScrollbarScroll","mCont","mHdr","onTouchScroll","pointerType","pageXY","getPointXY","clientWidth","scrollBar","setPageXY","touches","pageX","pageY","frzCols","mScrollBar","sLeft","sHeight","css","overflowY","cont","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","isRowDragable","getIndentCount","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","DetailFooterIntent","attributes","class","getRowUid","sColumn","scolumn","opt","dummy","single","setTemplate","a","disp","Summary","GroupSummaryModelGenerator","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","reduce","cur","isEmpty","CaptionSummary","AriaService","setOptions","setStateAndProperties","config","setSort","setBusy","isBusy","busy","invalid","isGrabbed","grabbed","isTarget","dropeffect","attribute","removeAttribute","role","multiselectable","haspopup","colcount","rowcount","Input","CLASSNAMES","RTL","DISABLE","INPUT","TEXTAREA","INPUTGROUP","FLOATINPUT","FLOATLINE","FLOATTEXT","CLEARICON","CLEARICONHIDE","LABELTOP","LABELBOTTOM","NOFLOATLABEL","INPUTCUSTOMTAG","FLOATCUSTOMTAG","floatType","inputObject","clearButton","createInputContainer","createFloatingInput","bindInitialEvent","showClearButton","setClearButton","appendSpan","validateInputType","setPropertyValue","checkInputValue","getParentNode","inputElement","inputValue","_focusFn","_blurFn","getElementsByTagName","wireFloatingEvents","unwireFloatingEvents","floatLinelement","floatLabelElement","customTag","innerText","encodePlaceHolder","inputWrap","updateLabelState","event","checkFloatLabelType","setCssClass","setEnabled","enabled","setEnableRtl","setPlaceholder","setReadonly","readonly","updateIconState","button","createClearButton","initial","baseElement","insertAdjacentElement","wireClearBtnEvents","readOnly","activeElement","validateLabel","tagClass","tag","spanEle","hiddenInput","setValue","elements","oldClass","isReadonly","isRtl","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","isClear","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","wrapper","setRipple","isRipple","_internalRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","_onMouseRipple","ele","parentEle","createIconEle","iconClass","addIcon","icons","internalCreate","icon","result_2","prependSpan","innerWrapper","containerElement","headerDrop","createReorderElement","chkDropPosition","srcElem","destElem","bool","lockColumn","isEqualNode","targetParentContainerIndex","chkDropAllCols","isFound","getHeaderCells","pop","findColParent","getColumnsModel","columnModel","subCols","getFrozenColumns","dropElement","uId","destElemDiv","destElemUid","destColumn","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","newIndex","destElement","oldIdx","column_2","isActionPrevent","destIndex","reorderByColumn","preventRefresh","getColParent","srcIdx","lockcolPositionCount","trim","toColumnUid","flatColumns","frozenColumns","fTh","mTh","fHeaders","fRows","mRows","isAvail","parents","reorderSingleColumn","fromFName","toFName","fColumn","toColumn","reorderMultipleColumns","fromFNames","getColumnIndexByField","getColumnByIndex","cols_1","fromColumnUid","isMultipleReorder","moveTargetColumn","reorderSingleColumnByTarget","reorderMultipleColumnByTarget","reorderColumns","fromCol","reorderColumnByIndex","reorderColumnByTargetIndex","isXaxis","setDisplay","upArrow","downArrow","onClick","visibleCols","toCol","getMovableVirtualContent","stopTimer","updateScrollPostion","updateArrowPosition","cliRect","getBoundingClientRect","cliRectBaseRight","right","updateFrozenScrollPosition","cliRectBaseLeft","scrollElem_1","timer","scrollElem","mhdrCliRect","getFrozenLeftCount","getFrozenRightColumnsCount","clearInterval","cliRectBase","dropEle","dropCol","fhdrWidth","round","getFrozenVirtualHeader","mhdrRight","getMovableVirtualHeader","getNormalizedColumnIndex","DataManager","timeTillExpiration","cachingPageSize","enableCaching","jsonp","isCors","defaultQuery","isDataAvailable","setDefaultQuery","buildHierarchy","makeRequest","Deferred","isAjaxAdaptor","getDeferedArgs","nextTick","setImmediate","extendRequest","fnSuccess","fnFail","cache","processData","onFailure","isSelector","error","process","actual","virtualSelectRecords","fnQueryChild","selector","subDeffer","childArgs","subUrl","childReq","subData","ajaxReqOption","httpRequest","virtualRecords","ajax_1","send","pResult","cResult","doAjaxRequest","deff_1","ajax_2","successFunc","ajaxDeffered","failureFunc","ajaxFunc","ajax_3","parentDocument","targetContainer","fit","viewPortElement","axis","elemData","ownerDocument","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","elementRect","bottom","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","offsetX","offsetY","positionX","positionY","fixedParent","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","visibility","removeProperty","posX","posY","updateElementData","setPosition","leftFlip","topFlip","setPopup","offsetParent","edge","eStatus","getBodyScrollLeft","deepCheck","collideSide","getBodyScrollTop","innerHeight","getTargetContainerLeft","getTargetContainerTop","documentElement","body","windowWidth","innerWidth","popupRect","calculateRelativeBasedPosition","anchor","fixedElement","anchorPos","tempAnchor","offsetLeft","offsetTop","calculatePosition","currentElement","targetValues","updatePosition","setPosx","setPosy","getElementHCenter","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","inserted","mCell","isIntersecting","intersectingCell","Width","Height","base","compare","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","wrapText","hAlign","vAlign","numberFormat","borders","Borders","isGlobalStyle","Font","sz","u","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","Border","mLine","mColor","lineStyle","Row","Rows","Image","Cell","Cells","CRC32TABLE","ZipArchive","initCrc32Table","files","isMicrosoftBrowser","navigator","msSaveBlob","addItem","file","ZipArchiveItem","addDirectory","directoryName","save","zipArchive","saveInternal","saveAsBlob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","reader_1","FileReader","onload","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","length_1","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","currentIndex","nextIndex","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","shift","writeFooter","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","charCodeAt","bytes","modTime","modiDate","itemName","ValueFormatter","cultureName","intl","getDateFormat","getNumberFormat","displayText","CsvHelper","separator","csvStr","formatter","globalStyles","Map","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","dataUrl_1","dwlLink","event_1","createEvent","initEvent","dispatchEvent","revokeObjectURL","BlobHelper","parts","append","part","getBlob","AutoFilters","Workbook","saveType","culture","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","currency","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","cellStyle","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","category","company","manager","subject","createdDate","modifiedDate","tags","status","jsonSheet","sheet","mergeCells","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","freeze","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","isHidden","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","toUpperCase","rgbColors","processCellValue","cellValue","processedVal","startindex","endIndex","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","returnFormat","getNumberPattern","useGrouping","getDatePattern","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","font","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","value_1","sstvalue","imagesLength","image","parserImage","lastRow","lastColumn","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","_h","_j","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","convertToPixels","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","ArrayBuffer","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","processString","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","alignment","horizontal","vertical","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","toISOString","topRelation","wbRelation","contentTypeString","sheetsOverride","xmlString","archiveItem","startCell","endCell","updatedMergedCellStyles","sCell","eCell","dateToTicks","ticksPerDay","daysToMonth365","daysToMonth366","days","isLeapYear","timeToTicks","hour","minute","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","gridPool","init","isExporting","footer","exportValueFormatter","exportProperties","isMultipleExport","workbook","isCsv","isBlob","isBlb","workbk","isMultiEx","hierarchyExportMode","gridObject","processRecords","exportingSuccess","blobPromise","exportType","allPromise_1","getColumnData","processInnerRecords","query_1","groupedColLength","blankRows","colDepth","isExportPropertiesPresent","multipleExport","processExcelHeader","childGridLevel","processGridExport","globalResolve","checkAndExport","organisedRows","organiseRows","processExcelFooter","enableFilter","currencyCode","initialIndex","childRows","excelRows","gColumns","getGridExportColumns","headerRow","getHeaders","groupIndent","processHeaderContent","processRecordContent","currentViewData","returnType","currentViewRecords","excelRow","processRecordRows","processGroupedRows","processAggregates","startIndex","excelExportProperties","dataSource_1","formatCellValue","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","fillAggregates","childLevels","lIndex","hIndex","tCell","span","col_1","getGridRowModel","templateRowHeight","gCell","valueAccessor","fkData","getFData","idx","excelCellArgs","base64","excelImage","getColumnStyle","returnVal","createChildGrid","childGridObj","actionFailure","failureHandler","beforeDataBound","childGridCell","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","rows_2","getAggreateValue","Sum","Average","Max","Min","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","row_1","dummyOutlineLevel","dummyGrouping","txt","isVue","JSON1","JSON2","attrname","columnIndex","gridRows","gridColumns","spannedCells","currentCellIndex","gridCell","HeaderIndent","DetailHeader","getIndex","spannedCell","getHeaderThemeStyle","headerTextAlign","excelHeaderCellArgs","parseStyles","getRecordThemeStyle","updateThemeStyle","themestyle","caption","noRows","headerRows","updatedCellIndex","footerRows","spannedCells_1","getConvertedWidth","getCloneProperties","Print","scrollModule","isAsyncPrint","defered","isContentReady","actionBegin","onEmpty","hierarchyPrint","isPrintGrid","contentReady","removeColGroup","printGridObj","printModule","print","renderPrintGrid","printWind","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","printGrid","viewContainerRef","load","printgrid","selectedRows","contentDiv","headerDiv","overflowX","waitingPop","printGridElement","depth","groupCaption","colGroups","contentColGroups","hideColGroup","printGridProp","getDateParser","getNumberParser","setCulture","isBlazorPlatform","createInstance","classFunction","arrayParam","unbind","num","intCrypto","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","source","postMessage","nameSpace","isUndefined","fromObj","isNullOrUndefined","deleteObject","isObject","objCon","getEnumValue","enumObject","enumValue","merge","destination","temrObj","tempProp","deepmerge","extend","copied","deep","arguments_1","obj1","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","debounce","eventFunction","delay","out","later","compareElementParent","message","stack","printWindow","div","links","reference","outerHTML","interval","formatUnit","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys","propKeys_1","getSymbolRegex","regexStr","RegExp","getSymbolMatch","matchKeys","matchKeys_1","constructRegex","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","getBlazorCurrencySymbol","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","toGregorian","mcjdn","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","h","H","datePartMatcher","DateFormat","option","cldr","dependable","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","compareBlazorDateFormats","resPattern","getResultantPattern","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parserObject","patternMatch","patternMatch_1","char","weekday","monthIndex","designator","eText","era","timeZone","intDateFormatter","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","curval","curvalstr","processNumber","curstr","curlength","substr","desig","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","splt","curPattern","no","abs","ishour","errorText","percentSign","minusSign","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","defaultCurrency","nData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minFrac","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","lastIndexOf","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","tn","toPrecision","level1","sep","decimalSymbol","level2","prefix","lead","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","century","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","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","property","cntxt","notExist","isHandlerPresent","indexLocation","argument","successHandler","errorHandler","blazor","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","dPattern","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","getCulture","formatNumber","parseDate","parseNumber","isExcelFormat","getActualDateTimeFormat","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","loc","dateObj","actualPattern","tLength","timeZonePattern","options_1","processSymbol","numrericObject","curCode","hasNegativePattern","defaultMinimum","fractionDigitsPattern","minimumIntegerPattern","groupingPattern","cPattern","minDigits","maxDigits","diff","integer","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","nYear","nday","3","4","5","C","P","N","A","E","headerRegex","defaultType","Ajax","async","emitError","eventArgs","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","reason","responseText","readyState","statusText","responseHeaders","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","language","getEvent","events","isPointer","isTouch","move","isWindows","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","uA","maxTouchPoints","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","eventName","listener","bindTo","intDebounce","debounceListener","eventData","isIE","passive","clearEvents","copyData","eventProp","eventData_1","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","argName","evalExpResult","evalExp","fnCode","varCOunt","localKeys","isClass","singleSpace","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","splArrRegexp","SlashReplace","NameSpaceForspecialChar","addNS","ignoreList","emptyStrCheck","NameSpaceArrObj","arrObjReg","tempStr","double","nameSpaceNew","windowFunc","quotes","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","templateString","compiler","engineObj","propName","templateId","blazorTemplateId","randomId","blazorId","updateBlazorTemplate","templateName","comp","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","fromElements","toElement","prepend","vDomSelector","immediateParent","iSelector","curColl","length_2","isDescendant","parent_2","curSelector","processSelector","splitSelector","splitSelector_1","curMap","dSelector","dParent","descendent","dSelector_1","sel","descendentChild","dParent_1","iCurSelector","curParent","accessElement","curMapper","canPush","existValue","temp_1","matched","mapper_1","expected","actualValue","htmlString","isText","tagArray","nodeArray","getLastValue","iterateText","iterateEndTag","iterateStartTag","tagIndex","rest","isSelfTag","names","length_3","tagObject","parent_3","parent_4","parent_5","setStyleAttribute","SVG_REG","addClass","classes","getClassList","classList_1","curClass","removeClass","canRemove","classList_2","classes_1","classArr","isEval","docFrag","createDocumentFragment","executeScript","eleArray","script","head","iKey","needsVDOM","querySelectId","nodeList","charRegex","idList","list","splitId","setId","el","nodeType","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","bulkChanges","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","muteOnChange","prevDetection","serverDataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","sfBlazor","newValue","oldValue","moduleClass","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","inst","propertyGetter","propertySetter","oldVal","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","animate","getModel","elements_1","element_1","delayAnimation","animation","animationId","frameId","cancelAnimationFrame","applyAnimation","step","timerId","prevTimeStamp","startAnimation","avg","timingFunction","progress","requestAnimationFrame","performance","now","newProp","oldProp","rippleEffect","rippleOptions","rippleModel","getRippleModel","rippleFlag","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","isCenterRipple","sqrt","rippleElement","transform","removeRipple","rippleElements","opacity","lastPageID","MODULE_SUFFIX","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","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","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","mergePersistData","renderComplete","wrapperElement","event_2","injectedModules","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","isHistoryChanged","pageID","history","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","getScrollableParent","scroll","client","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","getHelperElement","dragTargetElement","helperElement","parentClientRect","getProperTargetElement","bindDragEvents","dragArea","setDragArea","enableTailMode","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","pageYOffset","pageXOffset","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","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","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","draggable","draggedElement","dropIns","getDropInstance","eleInst","eleInst_1","Droppable","mouseOver","area","isDrag","isDropArea","canDrop","coord","KeyboardEvents","isAltKey","altKey","isCtrlKey","ctrlKey","isShiftKey","shiftKey","curkeyCode","which","keyConfigs","configCollection","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","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","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","isFirefox","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","eTapArgs","pnt","newX","newY","newT","xDist","yDist","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","sanitize","output","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","cells_1","rowArgs","cellArgs","attrCopy","chekBoxEnable","isSelected","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","cellRenderer","getCellRenderer","DetailExpand","Filter","CommandColumn","requestTypeAction","isRowSpanned","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","rowHeight","lazyLoadCssClass","vFTable","summarycell","lastSummaryCell","firstSummaryCell","isAltRow","rowindex","dataUID","ariaSelected","RowModelGenerator","getInfiniteIndex","generateRow","ensureColumns","generateCell","RowDragIcon","tIndex","parentGid","enableAltRow","selectionModule","checkBoxState","selectedRowIndexes","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","oIndex","refreshRows","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","getTextNode","childnode","createCheckBox","enableRipple","rippleSpan","frameSpan","labelSpan","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","Tooltip","isBlazorTooltip","contentTargetValue","contentEvent","contentAnimation","formatPosition","isServerRender","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tooltipEle","tipClass","renderPopup","elePos","mouseTrail","getTooltipPosition","popupObj","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionFlipFit","reposition","needTemplateReposition","findTarget","tooltipEventArgs","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","showTipPointer","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","HTMLElement","enableHtmlSanitizer","enableHtmlParse","templateFunction","tempArr","isBlazorTemplate","renderCloseIcon","isSticky","tipClose","onStickyClose","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList","ctrlId","targetList_1","target_1","restoreElement","showTooltip","showAnimation","showTimer","hideTimer","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isBlazorTooltipRendered","interopAdaptor","invokeMethodAsync","beforeRenderBlazor","afterRenderBlazor","contentUpdated","ctrlObj","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","openDelay","onMouseMove","wireMouseEvents","tooltip","checkCollision","affectedPos","checkCollideTarget","newpos","collidedPosition","eleOffset","arrowleft","windowCollision","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","blazorHide","popupHide","proxy","closeAnimation","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","keyDown","touchEnd","scrollHandler","opensOn","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHold","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","HeaderRender","frzIdx","notfrzIdx","isFirstCol","headercelldiv","getStackedHeaderColumnByHeaderText","colIndex","lineHeight","ariaService","getFrozenLeftColumnsCount","colPosRefresh","renderCustomToolbar","rowRenderingMode","updateCustomResponsiveToolbar","renderPanel","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","headerTable","getColGroup","colgroup","setColGroup","colGroup","tHead","skipDom","createTable","createHeader","tableEle","cellspacing","tblName","findHeaderRow","createHeaderContent","thead","bodyCell","rowBody","Header","len_1","updateColGroup","frozenMode","colHeader","rowRenderer","colFreezeMode","indexes","getColumnIndexesInView","len_2","RowDragHIcon","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","inViewIndexes","getColumnIndexByUid","isTrue","lockColsCount","getFrozenColSpan","displayVal","clen","normalizedfrzCols","mTblColGrp","mTbl","refreshUI","freezeReorder","isVFTable","setFrozenTable","getVirtualFreezeHeader","appendContent","updateDefaultCursor","gCells","allowTextWrap","textWrapSettings","wrapMode","stackedHdr","toolbarItems","toolbarLeft","toolbarItem","onclick","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","getGui","fltrMenuEle","prepareHeader","hValueAccer","ariaAttr","innerDIV","headerValueAccessor","checkAllWrap","buildAttributeFromCell","appendHtml","matchFlColumns","customAttributes","extendPrepareHeader","gridObj","headerTempID","clipMode","matchFilteredColumns","innerHtml","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","localizer","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","renderer","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","refreshDataManager","preventUpdate","resetTemplates","editSettings","tempPreventUpdate","commandDelIndex","getSelectedRecords","tempSelectedRecord","dataLength","totalRecordsCount","prevPageMoving","ceil","pagerModule","pagerObj","getGroupCache","refreshContentRows","toolbarTemplate","refreshComplete","isFActon","isNeedForeignAction","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerFailure","deferred","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","colspan","dynamicColumnChange","updateColumnType","cFormat","equalTo","fmtr","validationRules","isColTypeDef","isServerDateMap","actionArgs","isInfiniteDelete","infiniteScrollSettings","enableCache","isInfiniteEnd","prevCurrentView","updatesOnInitialRender","isInitialLoad","enableImmutableMode","immutableModeRendering","setRowElements","setRowObjects","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","GroupCaption","GroupCaptionEmpty","Expand","group0","groupN","addWhere","curDm","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","data_1","customAggregate","CellRendererFactory","cellRenderMap","ResponsiveDialogRenderer","sortedCols","sortPredicate","closeCustomDialog","setCustomFilterHeader","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","filterModule","saveBtn","backBtn","customExcelFilterParent","isFilter","isOpen","filterClearBtn","getHeaderTitle","renderResponsiveContent","filterParent","customColumnDiv","sortBtnParent","filteredCols","cDiv","isSort","getSortedFieldsAndDirections","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","setSortedCols","getCurrentSortedFields","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","filteredCol","renderResponsiveDialog","enableAdaptiveUI","setFilterModel","createOptions","setTopToChildDialog","renderCustomFilterDialog","customFilterDlg","dialogEle","top_1","outerDiv","getDialogOptions","isCustomFilter","isModal","showCloseIcon","closeOnEscape","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","sortField","closeResponsiveDialog","closeCustomFilter","keyHandler","clearSorting","primaryKeyValue","isAdd","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","ServiceLocator","services","register","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","RendererFactory","rendererMap","rName","ColumnChooserSettings","ShowHide","showBy","getToggleFields","hideBy","finalized","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","emptyVcRows","selectionSettings","persistSelection","clearSelection","colsInCurrentView","col1","col2","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","keyDownHandler","pasteHandler","isMacLike","platform","metaKey","cellSelectionMode","clipBoardTextArea","x_1","scrollX","y_1","scrollY","scrollTo","paste","getSelectedRowCellIndexes","cellIndexes","rIdx","frRows","dataRows","getMovableDataRows","getFrozenRightDataRows","getRowByIndex","getCellFromIndex","fTr","mTr","frTr","editModule","updateCell","selectCellsByRange","setCopyData","withHeader","getSelection","getFrozenRightRows","selectedIndexes","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","rowIndexes","setSelectionRange","isCell","splitKey","isElement","queryCommandSupported","execCommand","blur","removeAllRanges","rowCellIndxes","gridObserver","BlazorAction","virtualHeight","onDetailRowClick","addDeleteSuccess","editSuccess","setColumnVisibility","setServerOffSet","modelChanged","onGroupClick","setColVTableWidthAndTranslate","invokeServerDataBind","contentColGroup","dataSourceModified","currentAction","editArgs","rIndex","gridRowId","gridRow","virtualContentModule","activeKey","blzRowIndex","selectRow","preventScroll","blazorDataLoad","foreignColumnsData","aggRows","aggRow","rowUid","offsetTime","sign","setClientOffSet","batchChanges","getMediaColumns","setVirtualHeight","removeDisplayNone","renderedContentRows","renderedContentCells","setVirtualTrackHeight","VisibleGroupedRowsCount","prevInfo","columnIndexes","translateX","getColumnOffset","startColIndex","endColIndex","virtualEle","setWrapperWidth","adjustTable","dataSourceChanged","refreshOffsets","refreshVirtualElement","serverTimezoneOffset","serverTimeZone","exactTopIndex","rowElements","mergePersistGridData","resetPersistData","parseArgs","persistArgs","contentTable","movableContentTable","movableHeaderTable","dataFailure","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","keyA","frozenRightCount","frozenLeftCount","tablesCount","movableCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","media","isFreezeRefresh","tableIndex","componentRefresh","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","pageTemplateChange","mediaBindInstance","asyncTimeOut","enableLogger","Grid_1","keyEntity","selectedRowIndex","scrollPosition","currentObject","pagerTemplate","setFrozenCount","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","isPersistSelection","filterOperators","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Item","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","EndsWith","Contains","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","FilterMenuDialogARIA","ExcelFilterDialogARIA","DialogEditARIA","ColumnChooserDialogARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","home","escape","ctrlHome","ctrlEnd","pageUp","pageDown","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","enter","ctrlEnter","shiftEnter","tab","shiftTab","space","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","gcol","getShowHideService","hideAtMedia","pushMediaColumn","matchMedia","mediaQueryUpdate","updateMediaColumns","mediaColumn","invokedFromMedia","showHider","refreshMediaCol","footerContent","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","keyboardModule","enableBoxSelection","enableAutoFill","checkCursor","requireRefresh","requireGridRefresh","isEllipsisTooltip","updateColumnObject","properties_1","updateAutoFillPosition","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","case","isModeChg","pending_1","getPrototypeOf","deepWatch","pKeyField","setRowData","gResult","scrollRefresh","isSelectedRowIndexUpdating","setWidthToTable","enableVerticalRendering","fn_1","refreshFilter","setTablesCount","frozenCols","frozenLeft","frozenRight","getTablesCount","headerCells","stdHdrCell","updateColumnModel","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","leftCols","rightCols","movableCols","directFrozenCount","totalFrozenCount","frozenName","frozenCount","isRefresh","inview","vLen","ensureFrozenCols","stackedHeader","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getFrozenDataRows","getRowElements","getFrozenRightRowByIndex","getRowInfo","getMovableRows","rowsObject","getMovableRowElements","getFrozenRightRowElements","getAllDataRows","includeAdd","getFrozenLeftContentTbody","hdrTbody","freezeRows","addMovableRows","generateDataRows","mrows","includAdd","dRows","getAllMovableDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","setCellValue","fieldIdx","rowuID","pkName","selectedRow","movableSelectedRow","rowObjects","movableRowObjects","sRow","mRow","refreshTD","columnUid","rowsObj","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnsCount","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenRightHeader","getFrozenLeftColumnHeaderByIndex","isFrozenRight","getMovableRowsObject","getFrozenRightRowsObject","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getRowTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowCellIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","removeSortColumn","filterByColumn","filterOperator","filterValue","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","searchString","fieldname","startEdit","closeEdit","deleteRow","editCell","saveCell","updateRow","getBatchChanges","enableToolbarItems","enableItems","clipboardModule","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","minWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderModule","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","sCols","sLen","parentDetails","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","dataReady","popup","tabIndex","gridLines","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","elemNames","hoverFrozenRows","myTableDiv","cssText","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","allowKeyboard","keyActionHandler","tapEvent","dataBoundFunction","blazorTemplate","isChildGrid","checkEdit","clonedColumn","ariaOwns","keyPress","editFormValidate","persistedData","dataObj","mergeColumns","storedColumn","storedColumns","localCol","tCol","this_2","presskey","stopImmediatePropagation","focusHeader","addOutline","focusContent","refreshColumns","fCnt","frCnt","isColFrozen","getMovableContent","frTbl","getFrozenRightContent","colGrp","excelExportModule","pdfExportProperties","pdfDoc","pdfExportModule","groupModule","groupExpandAll","groupCollapseAll","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","getFrozenVirtualContent","rowEle","frozenRigtRows","frHdr","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","nonContentHeight","getNoncontentHeight","contentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","getFormat","setHeaderText","form","gridInput","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","portals","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","assign","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","this_3","_loop_4","isRowExist","this_4","renderRowElement","mTbody","modelData","addRowObject","moveTbody","getHeight","isInteger","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","showCustomFilter","CellRenderer","rowChkBox","evaluate","fData","literals","templateID","rNumber","invokeFormatter","refreshCell","parentRow","newTD","cloneAttributes","displayAsCheckBox","localeStr","fromFormatter","checkWrap","setAttributes","isCheckBoxType","isTemplate","colindex","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","updateStyles","frag","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","totalPages","customText","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","regx","Pager","hasParent","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","containerModule","pagerMessageModule","isReactTemplate","initLocalization","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","setPageSize","pageSizes","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","pushState","uri","prevString","activeClass","prevElementId","incrementalSearch","selectedIndex","elementId","listItems","strLength","li","ul","hasChild","collapsible","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","dataField","ListBase","defaultMappedFields","isChecked","iconCss","hasChildren","htmlAttributes","urlAttributes","imageAttributes","imageUrl","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","showIcon","ariaAttributes","listClass","itemClass","processSubChild","sortOrder","groupTemplate","expandIconClass","expandIconPosition","itemNavigable","createList","isSingleLevel","componentInstance","curOpt","typeofData","typeof","createListFromArray","createListFromJson","subChild","createListItemFromArray","generateUL","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","curItem","innerEle","imageElemnt","iconElement","getSiblingLI","elementArray","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","addSorting","getDataSource","itemObj","grpItem","hdr","newtext","_id","createJsonFromElement","curEle","jsonAr","childs","i_1","hasChildNodes","attributes_1","getAllAttributes","elementAttributes","nodeName","nodeValue","renderContentTemplate","ulElement","compiledString","liCollection","currentID","groupTemplateID","renderGroupTemplate","headerItems","headerItems_1","headerData","subDS","subLi","expandElement","innerElements","grpLI","elementID","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","blazId","removeBlazorID","liElement","generateIcon","FieldSettings","dropDownBaseClasses","root","hover","noData","fixedHead","ITEMTEMPLATE_PROPERTY","VALUETEMPLATE_PROPERTY","GROUPTEMPLATE_PROPERTY","HEADERTEMPLATE_PROPERTY","FOOTERTEMPLATE_PROPERTY","NORECORDSTEMPLATE_PROPERTY","ACTIONFAILURETEMPLATE_PROPERTY","DropDownBase","preventChange","isPreventChange","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","exception","l10nUpdate","noRecordsTemplate","actionFailureTemplate","DropDownBaseresetBlazorTemplates","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataCompTemp","DropDownBaseupdateBlazorTemplates","l10nLocale","componentLocale","getLocaleName","liElem","getTextByValue","enableRtlElements","bindEvent","jsonElement","resetList","renderItemsBySelect","setListData","noRecord","itemTemplateId","groupTemplateId","valueTemplateId","headerTemplateId","footerTemplateId","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","emptyDataRequest","renderItems","bindChildItems","onActionFailure","localDataArgs","childNode","remainingItems","sortedData","updateListValues","raiseDataBound","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","listElement","focusItem","selectedItem","listEle","groupcheck","groupValue","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","zIndex","scrollStop","liHeight","topIndex","currentLi","isTempEmpty","itemcheck","listDataType","isNullData","defaultView","liWidth","firstLi","textField","getIndexByValue","getItems","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","setUpdateInitial","updateData","setZIndex","isEmptyData","rippleFun","isGroupChecking","itemIndex","itemsCount","selectedItemValue","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","updateDataList","validationAttribute","hidden","itemCount","getDataByValue","dropDownListClasses","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","previousValue","isListSearched","checkBlazor","isServerBlazor","initializeData","activeIndex","isPopupOpen","isDocumentClick","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","isTyped","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","keyConfigure","down","up","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","resetSelection","getItemData","onChangeEvent","selectedLI","itemData","valueTempElement","setSelection","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","validateAttr","getAriaAttributes","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlur","isFilterLayout","focusOutAction","focusOut","onFocusOut","onFocus","resetValueHandler","formElement","wireEvent","dropDownClick","focusIn","bindCommonEvent","mobileKeyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","isServerIncrementalSearch","searchKeyEvent","onServerIncrementalSearch","isValidLI","back","closePopup","setHover","hoveredItem","setScrollPosition","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavAction","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isServerNavigation","focusEle","isSelectFocusItem","nextItem","findLi","previousItem","unWireEvent","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSelectedLI","dropdownCompiler","dropdownTemplate","templateData","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","eve","detachChangeEvent","defineProperties","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","filterType","selectionStart","selectionEnd","clearElement","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","checkField_1","checkVal","addNewItem","isExist","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","serverPopupEle","listHeight","popupHeight","setHeaderTemplate","setFooterTemplate","updateServerPopup","searchBoxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","collision","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements","scrollParentElements_1","listScroll","inputParent","animModel","popupInstance","destroyPopup","serverBlazorUpdateSelection","bindServerScrollEvent","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","targetType","relateTo","isResetItem","actionList","targetExitViewport","popupOffset","lastItem","lastItemOffsetValue","paddingBottom","inputHeight","popupWidth","inputWidth","scrollBottom","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","setEleWidth","scrollableParentElements","scrollableParentElements_1","fixedHeader","popupHolderEle","updatedCssClassValues","selectElement","onselect","onchange","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","refreshPosition","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","ddlProps","newClass","invokeRenderPopup","isDropdownComp","proxy_2","onpopstate","clientRenderPopup","renderHightSearch","updateclientItemData","initValueItemData","serverUpdateListElement","isSelectVal","isFocused","attrArray","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","beforeValueChange","pageSizeValue","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","replaceChild","isForceCancel","previousPage","keyActions","appendToElement","handlers","complete","updateLayout","inboundChange","__assign","t","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","autoFillRLselection","factory","initializeSelection","onActionBegin","fDataUpdate","getRowObj","hidePopUp","mouseDownHandler","isEditing","formObj","getSelectedMovableRow","getSelectedFrozenRightRow","getCurrentBatchRecordChanges","currentRecords","newRowPosition","primaryKey","enableSimpleMultiRowSelection","addRowsToSelection","selectedMovableRow","selectedFrozenRightRow","isRemoved","frozenData","getRowObjectByIndex","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isHybrid","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","toggle","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","targetObj","frRow","mObj","previousMovRow","frozenRightRow","previousFrozenRightRow","getCollectionFromIndexes","isSingleSel","currentRow","prevRow","selectRowFn","rightEle","rowIndexes_1","checkboxOnly","rowIndexes_2","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","chkState","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","isPresent","chkBox","nextElementSibling","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","clearColumnSelection","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","isRowClicked","checkSelectAllClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","cancl_1","rowDeselectObj","rowInString","target_2","rowidx","rowidxex","data_2","isHeaderCheckBxClick","rowIndex_2","data_3","getSelectedMovableCell","getColIndex","isCellType","selectedCell","isCellSelected","prevCIdxs","successCallBack","previousRowCell","prevECIdxs","getCellIndex","currentCell","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","cellLen","addRowCellIndex","addCellsToSelection","movable","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","rowCell","cLen","bdrElement","showHideBorders","gBRect","x1","y1","x2","y2","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastCell","isLastRow","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","frcBdrElement","fhBdrElement","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","includes","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","totalWidth","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","startCellIndex","trIdx","mouseUpHandler","mUPTarget","lastCell","updateStartCellsIndex","autofill","rindex","isFrozenCol","isFrozenRow","clientRect","colWidth","enableDrag","isUpdate","postion","clearSelAfterRefresh","isInfiniteScroll","onCellFocused","columnPositionChanged","actionBeginFunction","actionCompleteFunction","actionComplete","rowsRemoved","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyUpHandler","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","renderFrozenRightContent","gobj","chkField","refreshPersistSelection","setRowSelection","mtbody","frtbody","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","checkSelectAll","stateStr","vgenerator","rowCache","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","isInteraction","checkToSelectAll","isServerRenderedVirtualization","checkedLen","allowColumnSelection","popUpClickHandler","chkSelect","headerSelectionHandler","byKey","keyArgs","isJump","isContent","isSelectable","headerAction","thLen","childElementCount","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","lastIndex","firstIndex","applyUpDown","selectColumn","cIndex","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","isFreeze","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","movableRows","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","refreshSearch","onSearchComplete","cancelBeginEvent","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","difference","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","elementWidth","fWidth","isDraggable","freezeLeft","freezeRight","getColumnLevelFrozenColgroup","frCont","editTableCol","frzMode","frozenScrollbar","movableScrollbar","frozencontent","movableContent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","previous","getHeightFromDirection","sibling","isWidUndefCount","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","exports","loaded","default","__e","__g","TypeError","F","G","S","B","W","g","w","virtual","R","U","propertyIsEnumerable","__esModule","HOUR_TOKENS","MINUTE_TOKENS","SECOND_TOKENS","APM_TOKENS","required","hideClearButton","Boolean","minuteInterval","validator","secondInterval","disabledValues","apm","showDropdown","displayTime","hourType","minuteType","secondType","apmType","showClearBtn","checkAcceptingType","hours","isTwelveHours","minutes","seconds","apms","isPastNoon","toggleDropdown","$emit","onHourSelect","onMinuteSelect","onSecondSelect","onApmSelect","clearTime","writable","Symbol","getOwnPropertySymbols","$createElement","domProps","stopPropagation","_l","active","refs","sourceMap","insertAt","singleton","styleSheet","sources","btoa","unescape","locals","ComponentBase","hasInjectedModules","hasChildDirective","childDirObjects","ej2Instances","vueInstance","getInjectedServices","injectables","$vnode","$options","updated","childKey","fetchChildPropValues","curChildDir","assignValueToWrapper","beforeDestroy","tempBeforeDestroyThis","bindProperties","prevModule","curModule","curModule_1","silent","childOption","dirProps","getDirectiveValues","$slots","tagMapper","tagNameMapper","dirProp","tagDirectives","keyTags","dir","tagDirectives_1","tagDirective","componentOptions","dirTag","tagDirChild","retObj","getVNodeValue","getMultiLevelDirValue","tagDirectories","tagKey","mulObj","tagDirectories_1","tagDir","mulLevObj","getCamelCaseProps","retProps","$internalHooks","EJComponentDecorator","EJcomponentFactory","_componentTag","proto","newVal","mixins","collectDataFromConstructor","__decorators__","superProto","Super","Extended","vm","_init","plainData","stringCompiler","templateElement","that","returnEle","tempObj","propsData","extends","templateVue","$mount","ColumnsDirective","ColumnsPlugin","install","ColumnDirective","ColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","modelProps","GridComponent","models","_trigger","_setProperties","propKey","PdfWriter","streamWriter","pdfDocument","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","pair","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","containsKey","retutnValue","InternalEnum","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","Registered","lookFor","oi","object","getReference","wasNew","trySetReference","found","setReference","pdfObject","isSaving","objectCollectionIndex","pdfReference","StreamWriter","encoding","bufferBlob","bufferText","enc","setBomByte","includeBom","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","objects","pdfCrossTable","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","cTable","setCatalog","catalog","SW","encoding_1","SW_1","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","escapeString","crossTable","newName","stringValue","ch","delimiters","replacements","Operators","forTest","endObj","whiteSpace","slash","newLine","endStream","xref","trailer","startxref","eof","beginText","endText","beginPath","appendLineSegment","stroke","fill","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closePath","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPath","clipPathEvenOdd","endPath","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","resources","mediaBox","decodeParms","type1","baseFont","subtype","contents","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","annot","annots","ca","CA","xyz","dest","BM","flatedecode","bBox","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","flags","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","background","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","SaveAnnotationEventHandler","SaveSectionEventHandler","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","bounds","tempElements","markChanged","removeAt","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","position1","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","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","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","tempIndex","tempkey","tempvalue","None","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","dereference","RegisteredObject","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","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","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","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","rotateAngle","RotateAngle0","Portrait","pageOrigin","isRotation","setSize","orientation","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","setColourWithPattern","colours","patternName","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","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","Dash","Dot","DashDot","DashDotDot","pen","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","lineWidth","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","textAlignment","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","clip","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","textValue","currentPosition","getCharsCount","numSymbols","readLine","text2","peekLine","line","readWord","peekWord","word","read","peek","readToEnd","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","layout","arg7","clientSize","doLayout","rectSize","pageHeight","rectangle","reader","lineResult","lines","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","setStyle","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","translate","scaleX","scaleY","whitespace","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","Matrix","metrixElements","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","ReferenceError","RangeError","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","restore","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","getBrush","defaultFont","getPageFromGraphics","PdfAutomaticFieldInfo","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","DataView","readByte","getBuffer","writeFromBase64String","encodedString","chr1","chr2","chr3","enc1","enc2","enc3","enc4","keyStr","resultIndex","totalLength","byteLength","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","i1","i2","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","MAX_VALUE","tableKeys","fontTag","ttcIdentificationNumber","tableInfo","formatSelector","readUInt16","recordsCount","nameRecords","recordSize","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","modified","xMin","yMin","xMax","yMax","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","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","fontFamily","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","isSymbol","factor","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","unknown","getString","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","chars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result1","result2","fontProgram","convertString","getCharWidth","codeWidth","isUnicode","sFraction","low","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","shape","st","doShape","ligature","ArabicShape","present","shapeCount","getShapeCount","Shapes","Value","Ligature","Type","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","even","pstart","pend","reArrange","textOrder","rtlCharacterTypes","L","LRE","LRO","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","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","byte","lt","tt","rt","RtlRenderer","openBracket","closeBracket","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","box","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","initializeCoordinates","addType","addSubType","PdfBorderOverlapStyle","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","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","marker","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","to","convertFromPixels","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","values_1","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","clipBounds","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","drawLine","stateControl","drawRectangle","xOffset","yOffset","layer","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","drawImage","physicalDimension","name_2","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","vShift","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","textSize","layoutedRectangle","Center","Right","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","subScript","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","getPages","setClip","tm","getTextRenderingMode","cs","ws","textHeight","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","tokens","token","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","strikeout","linePen","createUnderlineStikeoutPen","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","Left","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","TransparencyData","name_3","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","textRenderingMode","doRestoreState","popState","drawPath","buildUpPath","pathPoints","pathTypes","fillMode","constructArcPath","typeValue","Start","Bezier3","p2","p3","getBezierPoints","Line","checkFlags","points","pathTypesValuesMask","CloseSubpath","startAng","sweepAngle","getBezierArc","pt","numX1","numY1","numX2","numY2","e1","fragAngle1","numFragments","xcen","ycen","rx","ry","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","oPage","sc","isSame","origin","clipRect","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","annotations","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","hasBackTemplates","containsTemplates","backLayer","drawTemplates","hasFrontTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","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","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","onPageAdded","document_1","getLeftIndentWidth","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","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","PdfBorders","defaultBorderPenLeft","dashStyle","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","leftPad","rightPad","bottomPad","topPad","PdfHorizontalOverflowType","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","gridBorderOverlapStyle","Overlap","bAllowHorizontalOverflow","gridHorizontalOverflowType","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","getCell","backgroundBrush","gridRowTextBrush","setTextBrush","textBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","setParent","gridRowBackgroundImage","ElementLayouter","layoutElement","getElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","remainder","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","doesntFit","FitElement","getTextPageBounds","shiftedRect","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","elementValue","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","previousPosition","calculateResultBounds","lineSize","maximumWidth","startPosition","PdfAnnotation","textFont","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","PdfTextWebLink","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridLayouter","gridInitialWidth","gridSize","parentCellIndex","tempWidth","childheight","hasRowSpanSpan","isRearranged","pageBounds","listOfNavigatePages","columnRanges","currentLocation","breakRow","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","getRow","startLocation","hType","horizontalOverflowType","allowHorizontalOverflow","measureColumnsWidth","determineColumnDrawRanges","isRowHeightSet","startColumn","endColumn","cellWidths","availableWidth","getColumn","subWidths","endArgs","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","currentRowIndex","getHeader","drawRow","repeatRow","originalHeight","repeatRowIndex","rowResult","splitChildRowIndex","isrowFinish","ParentCell","isGridSplit","rowCollection","isFinish","tempResult","raisePageLayouted","allowRowBreakAcrossPages","getNextPageformat","cellPadding","rowBreakHeight","isRowBreaksNextPage","rowBreakHeightValue","i_2","noOfPageCount","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","i_4","OnePage","i_5","NestedGridLayoutResult","recalHeight","ReCalculateHeight","secion","pageGraphics","location_2","cellWidth","totalwidth","i_6","columnWidth","drawCellBorders","columnSpan","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","pageindex","CheckIfDefaultFormat","defaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","raiseBeginCellDraw","PdfGridBeginCellDrawEventArgs","onBeginCellDraw","raiseAfterCellDraw","cellstyle","raiseEndCellDraw","PdfGridEndCellDrawEventArgs","onEndCellDraw","count_1","repeatFlag","PdfGridLayoutResult","newHeight","measureHeight","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","startRowIndex","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","rowHeightWithSpan","rowSpanExists","maxSpan","currRowIndex","calculatedHeight","LayoutFormat","FitPage","drawRowWithBreak","repeatRowNumber","skipcell","location_4","cancelSpans","isCellMergeContinue","rowOverflowIndex","cellSpacing","rowMergeComplete","calculateHeight","gridHeight","cellHeight","cellstyle1","FinishedDrawingCell","rowBreakPageHeightCellIndex","PdfGridLayoutFormat","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","isCancel","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","RowLayoutResult","layoutedBounds","bIsFinished","PdfGridCell","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","gridRowSpan","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","remaining","objectValue","isSingleGrid","rowCount","colCount","columnSpanExists","isComplete","measureWidth","slr","getTextFont","webLink","drawCellBackground","getBackgroundBrush","backgroundImage","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","rowFontSplit","layoutRect","Paginate","setSpan","checkSpan","childGridResult","imageBounds","borderOverlapStyle","Inside","p1","Square","currentColIndex","compWidth","calculateWidth","currentValue","internalWidth","PdfGridCellCollection","tempcell","PdfGridColumn","isCustomWidth","PdfGridColumnCollection","internalColumns","initialWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","rowWidth","isRowSpanRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","pdfGrid","bRowSpanExists","gridCells","rowStyle","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","addRow","temprow","PdfGridHeaderCollection","PdfGrid","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridHeaders","gridStyle","ispageWidth","ischildGrid","measure","parentCell","gridLocation","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","columnCount","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","hideColumnInclude","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","pdfPageSettings","exportWithData","processExport","headerPageNumbers","gridDrawPosition","drawPos","processSectionExportProperties","drawHeader","getPageSize","gridTheme","getGridPdfFont","processExportProperties","headerThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","getFontFamily","getFontStyle","penBrushColor","hexToRgb","borderCaption","getBorderStyle","isTrueType","headerSize","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordStyle","fontFamily_3","groupIndex","dataSourceItems","captionSummaryModel","isGroupedFooter","eCols","applyTextAndSpan","colIdx","gridHeader","pdfCell","getHorizontalAlignment","getVerticalAlignment","recuHeader","spanCnt","isRoot","cidx","newSpanCnt","fromBottom","drawPageTemplate","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","pageNumber","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","captionRow","sRows_1","leastCaptionSummaryIndex","getSummaryWithoutTemplate","getTemplateFunction","setRecordThemeStyle","borderRecord","cellLength","textLink","spanCell","gridRow_1","backgroundColor","borderColor","verticalAlign","hex","bigint","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","generate","passiveFocus","skipAction","getFocusInfo","elementToFocus","force","beforeArgs","byClick","clickArgs","clearOutline","onKeyPress","skipOn","bValue","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","setActiveByKey","lastIdxCell","clearIndicator","th","inputTarget","filterCell","focusVirtualElement","virtualData","isKeyFocus","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","resetFocus","getInfo","focusedColumnUid","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","newMovableRows","newFrozenRows","newfrRows","handlerInstance","index_1","focusElement","cellPosition","gridPosition","passiveHandler","restoreFocus","evts","filterfocus","actionsG","restoreFocusWithAction","internalCellFocus","forgetPrevious","getFocusable","allow","emptyTable","inValid","vector","indexesByKey","getCurrentFromAction","editNextRow","isLastCellPrimaryKey","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","isDirty","nextRowFocusValidate","previousRowFocusValidate","frozenSwap","frSwap","enterFrozen","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","headerSwap","fMatrix","current1","current2","hMatrix","current3","SearchBox","searchFocus","searchBlur","headerMat","PositionData","OPEN","Popup","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","orientationOnChange","getRelateToElement","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","isElementVisible","checkGetBoundingClientRect","win","windowView","elementView","checkFixedParent","parentDisplay","getAnchorPosition","eleRect","anchorEle","anchorRect","callFlip","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","zIndexElement","getZindexPartial","parentStyle","overflowRegex","parentZindex","childrenZindex","siblingsZindex","finalValue","currentZindexValue","rowDataBound","queryCellInfo","headerCellInfo","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","beforePrint","printComplete","detailDataBound","batchAdd","batchCancel","batchDelete","recordDoubleClick","recordClick","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","exportGroupCaption","initialLoad","uiUpdate","inBoundModelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","searchComplete","reorderComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","rowsAdded","columnDragStop","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","preventBatch","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","beforePdfExport","pdfQueryCellInfo","pdfHeaderQueryCellInfo","freezeRender","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","showEmptyGrid","dataStateChange","rtlUpdated","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","partialRefresh","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","filterCboxValue","componentRendered","detailStateChange","detailIndentCellInfo","virtaulCellFocus","virtualScrollEdit","editReset","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","resetColumns","pdfAggregateQueryCellInfo","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","ContentRender","freezeRowElements","isLoaded","viewColIndexes","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","mutableData","rafCallback","mContentRows","fContentRows","fHdr","generator","getModelGenerator","droppableDestroy","pressedKey","virtualTable","virtualTrack","createContentTable","initializeContentDrop","currentMovableRows","initialPageRecords","trElement","hdrfrag","tbdy","fCont","virtualInfo","sentinelInfo","borderRightWidth","removeClassByUid","addClassByUid","renderMovableContent","checkCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","updateVirtualCells","blockLoad","offsets_1","bSize","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","rowTemplateID","lastElementChild","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","getFrozenHeader","parentTable","setIsFrozen","renderNextFrozentPart","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","colG","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","trs","getHeaderColGroup","droppable","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","updateCellIndex","GroupModelGenerator","summaryModelGen","ensureRowVisibility","parentid","childId","isRenderCaption","prevKey","generateCaptionRow","rowCnt","isCaptionRow","aggregatesCount","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","selectedHandler","minHeight","resizeWestWidth","elementClass","originalWidth","originalX","originalY","originalMouseX","originalMouseY","RESIZE_HANDLER","FOCUSED_HANDLER","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","resizeStart","resize","resizeEnd","setLeft","previousWidth","dialogBorderResize","createResize","resizeBegin","resizing","resizeComplete","getDOMElement","boundary","directions","setBorderResizeElm","resizeHandler","calculateValues","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseUp","coordinates","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","setMinHeight","minimumHeight","setMaxWidth","setMaxHeight","removeResize","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CONTENT","DLG_CLOSE_ICON","DLG_OVERLAY","DLG_TARGET","DLG_CONTAINER","SCROLL_DISABLED","DLG_PRIMARY_BUTTON","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_HIDE","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_REF_ELEMENT","Dialog","initRender","enableResize","setResize","getMinHeight","headerContent","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","localeText","checkPositionData","prevOnChange","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","headerHeight","footerHeight","onResizeStart","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","toLocaleLowerCase","targetEle","wireWindowResizeEvent","unWireWindowResizeEvent","buttonObj","ftrTemplateContent","focusableElements","isTagName","isContentEdit","primaryButtonEle","buttonIndex_1","firstPrimary","setCSSClass","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","setButton","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","handleContent","dragObj","dragEventArgs","buttonContent","buttonType","footerBtn","innerContentElement","sanitizeHelper","templateProps","templateValue","isString","dialogItem","beforeEvent","headerEle","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","Element","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","isFullScreen","fullScreen","beforeOpenArgs","openAnimation","beforeCloseArgs","getButtons","DialogUtility","alertDialogObj","dialogElement","okButtonModel","createDialog","alertOptions","confirm","confirmDialogObj","okCancelButtonModel","confirmOptions","dialogObject","formOptions","setAlertButtonModel","setConfirmButtonModel","alertButtonModel","okButton","formButtonModel","cancelButtonModel","cancelButton","buttonPropModel","buttonProps","doesImplementInterface","checkFor","getUpdateUsingRaf","updateFunction","isExportColumns","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","gLen","dataRowCnt","agrCnt","gLevel","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","setStyleAndAttributes","copyAttr","exclude","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","isBottomTail","popUpSpan","targetPosition","getPopupLeftPosition","getPosition","parentsUntil","isID","getElementIndex","inArray","getActualPropFromColl","getUid","appendChildren","calculateAggregate","Global","divNode","showConfirmDialog","clName","isServer","addRemoveActiveClasses","getFilterMenuPostion","elementVisible","dlgWidth","leftPos","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","setSeconds","predicateSt","predicateEnd","renderMovable","mEle","isGroupAdaptive","getExpandedState","getPrintGridModel","printGridModel","extendObjWithFn","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","compareChanges","frozenRightRowElements","gridActionHandler","getCellsByTableName","getCellByColAndRowIndex","mtch_1","addBiggerDialog","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","DataUtil","localeCompare","extractFields","jsonArray","newData","isLazyLoad","groupedArray","getVal","aggs","grp","fKeyData","copyObj","middle","diacritics","fnName","param1","param2","adp","rand","hexs","getItemFromComparer","castRequired","requiresCompleteRecord","sum","average","truecount","falsecount","operatorSymbols","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","CellMergeRender","targetCell_1","colSpanLen","colSpanRange","spanText","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","getIndexFromAllColumns","vColumnIndices","ExportHelper","processColumns","columnPromise","fColumns","isHideColumnInclude","processHeaderCells","generateActualColumns","actualColumns","getCellCount","appendGridCells","isIgnoreFirstCell","exportId","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","isServerBlaz","CLS_ROOT","CLS_DISABLE","CLS_HSCROLLBAR","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","touchHandler","swipe","swipeHandler","scrollEle","createOverlay","createNavIcon","setScrollState","scrollStep","scrollDiv","innerEle_1","ele_1","scrollItems","nav","overlay","navEles","rightOverlayEle","clsRight","navItem","leftEle","eventBinding","clsLeft","navEle","navLeftItem","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","timeout","scrollDis","timeoutFun","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","deltaY","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","resizeContext","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","tbarItemsCol","isVertical","isExtendedOpen","popupPriCount","wireKeyboardEvent","keyModule","docKeyDown","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","destroyScroll","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","clst","keyHandling","navChk","scrollChk","popAnimate","eleFocus","popupCheck","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","skipEle","clsList","isPopupElement","popupNav","popupClickHandler","tempItem","clickedArgs","CLS_RTL","getElementOffsetY","renderControl","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleInlineItem","eleItem","multiVar","extendVar","innerNav","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","nodeIndex","poppedEle","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","eleStyles","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","pre","checkoffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","sepDisplay","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","templateRender","templateProp","isComponent","itemType","toolbarTemplateID","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","multirowele","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","eleIndex","innerItems_1","innerItems_2","nextEle","setFlag","removeFlag","initELe","predefinedItems","gridID","preItems_1","itemStr","localeName","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","getResponsiveToolbarItems","clicked","toolbarClickHandler","viewStr","registerTemp","ID","renderResponsiveSearch","isRender","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","toolbarItems_1","getItemObject","itemObject","items_2","gID","newArgs","toolbarargs","tarElement","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","gObj_1","colObj","initiateSort","showPopUp","colUid","allowUnsort","enableSortMultiTouch","filterElement","updateAriaAttr","isValDiff","makechanges","extension","mimeType","getMimeType","downloadLink","hasDownloadAttribute","isPopupBlocked","onloadend","readAsDataURL","Encoding","emitBOM","encodingType","initBOM","getByteCount","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","high","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint16","byteUni","byte16","cssClassName","BUTTON","PRIMARY","ICONBTN","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","btnClickHandler","FooterRenderer","gridModule","modelGenerator","fDiv","mDiv","frDiv","frozenContent","frozenRightContent","tFoot","frTable","frCol","renderSummaryContent","cStart","cEnd","summaries","fragment","rowrenderer","srow","movableLastCell","borderRight","movableCnt","frozenCnt","refreshHeight","frozenDiv","updateFooterTableWidth","onScroll","movableHeight","refreshCol","mheaderCol","fheaderCol","onWidthChange","getColFromIndex","fCol","getIndexByKey","isModified","idVal","agrVal","SummaryCellRenderer","refreshWithAggregate","gColumn","groupKey","cellNode","curCell","initiateRender","cellFac","footerRenderer","summaryIterator","dataColumn","cModel","gModel"],"mappings":"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O,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,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,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,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L,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,OAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,OAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,OAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,OAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,OAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAE7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAM,MAC7ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,MAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,KAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9ClwD,KAAKkgP,yBAAyBhwL,SAAS,MAAO,OAC9C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zE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,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,KAMTf,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,IAA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IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,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,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KAEdb,EAAS3zQ,YAAc,CAQnBw5G,MAAO,SAAUhpF,EAAQs5C,EAAUhuG,EAAYC,GAK3C,OAJIA,IACAy0D,EAASmjP,EAASppI,iBAAiB/5G,GACnCs5C,EAAW6pM,EAASppI,iBAAiBzgE,IAErChuG,EACO63S,EAASrvS,YAAYks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","file":"js/chunk-3a2fef48.aa237bcb.js","sourcesContent":["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 request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query));\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 data = request ? JSON.parse(request.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 AjaxAdaptor = /** @class */ (function (_super) {\n __extends(AjaxAdaptor, _super);\n function AjaxAdaptor(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 AjaxAdaptor.prototype.getModuleName = function () {\n return 'AjaxAdaptor';\n };\n return AjaxAdaptor;\n}(UrlAdaptor));\nexport { AjaxAdaptor };\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 { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar spinTemplate = null;\nvar spinCSSClass = null;\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n * @param args\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @param args\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[uniqueID].timeOut = 0;\n globalObject[uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n var x = 0;\n var y = 0;\n var rad = 24;\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n function boot_animate(radius) {\n if (globalTimeOut[id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n var spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0,\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[id].isAnimate = !isHide;\n switch (globalTimeOut[id].type) {\n case 'Material':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @param args\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('vs-tabs',{staticStyle:{\"width\":\"auto\",\"min-height\":\"500px\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('vs-tab',{staticClass:\"p-6\",staticStyle:{\"min-height\":\"500px\"},attrs:{\"label\":\"SAP Information\"}},[_c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('vx-card',{staticClass:\"pb-3\",attrs:{\"title\":\"SAP Information\",\"refresh-content-action\":\"\",\"collapse-action\":\"\"},on:{\"refresh\":_vm.closeCardAnimationDemo}},[_c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col md:w-1/2 w-full mt-2\"},[_c('label',[_vm._v(\"From date\")]),_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-full\",attrs:{\"id\":\"FromDate\",\"placeholder\":\"From Date\",\"format\":\"yyyy-MM-dd\",\"name\":\"From Date\"},model:{value:(_vm.formData.fromDate),callback:function ($$v) {_vm.$set(_vm.formData, \"fromDate\", $$v)},expression:\"formData.fromDate\"}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.has('From Date')),expression:\"errors.has('From Date')\"}],staticClass:\"text-danger text-sm\"},[_vm._v(_vm._s(_vm.errors.first('From Date')))])],1),_c('div',{staticClass:\"vx-col md:w-1/2 w-full mt-2\"},[_c('label',[_vm._v(\"To date\")]),_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-full\",attrs:{\"id\":\"ToDate\",\"placeholder\":\"To Date\",\"format\":\"yyyy-MM-dd\",\"name\":\"To Date\"},model:{value:(_vm.formData.toDate),callback:function ($$v) {_vm.$set(_vm.formData, \"toDate\", $$v)},expression:\"formData.toDate\"}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errors.has('To Date')),expression:\"errors.has('To Date')\"}],staticClass:\"text-danger text-sm\"},[_vm._v(_vm._s(_vm.errors.first('To Date')))])],1)]),_c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col md:w-1/2 w-full mt-2\"},[_c('label',[_vm._v(\"From Time\")]),_c('vue-timepicker',{staticClass:\"w-full\",attrs:{\"id\":\"FromTime\",\"format\":\"HH:mm:ss\",\"manual-input\":\"\",\"placeholder\":\"From Time\",\"name\":\"From Time\"},model:{value:(_vm.formData.fromTime),callback:function ($$v) {_vm.$set(_vm.formData, \"fromTime\", $$v)},expression:\"formData.fromTime\"}})],1),_c('div',{staticClass:\"vx-col md:w-1/2 w-full mt-2\"},[_c('label',[_vm._v(\"To Time\")]),_c('vue-timepicker',{staticClass:\"w-full\",attrs:{\"id\":\"ToTime\",\"format\":\"HH:mm:ss\",\"manual-input\":\"\",\"placeholder\":\"To Time\",\"name\":\"To Time\"},model:{value:(_vm.formData.toTime),callback:function ($$v) {_vm.$set(_vm.formData, \"toTime\", $$v)},expression:\"formData.toTime\"}})],1)]),_c('br'),_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('v-select',{staticClass:\"w-full\",attrs:{\"placeholder\":\"Search / Select product\",\"options\":_vm.productsDropdown,\"name\":\"Product\"},model:{value:(_vm.selectedProduct),callback:function ($$v) {_vm.selectedProduct=$$v},expression:\"selectedProduct\"}})],1),_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('v-select',{staticClass:\"w-full\",attrs:{\"placeholder\":\"Search / Select store\",\"options\":_vm.storeDropdown,\"name\":\"Store\"},model:{value:(_vm.selectedStore),callback:function ($$v) {_vm.selectedStore=$$v},expression:\"selectedStore\"}})],1),_c('div',{staticClass:\"vx-col w-full mb-base\"},[_c('vs-button',{ref:\"submit\",staticClass:\"rounded-lg w-full vs-con-loading__container\",attrs:{\"id\":\"addInfo\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.GetGridSimple()}}},[_vm._v(\"Submit\")])],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isVisible),expression:\"isVisible\"}],ref:\"sapgrid\",staticClass:\"vs-con-loading__container\",attrs:{\"id\":\"QDPGrid\"}},[_c('div',{attrs:{\"id\":\"SGrid\"}})])],1)])]),_c('vs-tab',{staticStyle:{\"min-height\":\"500px\"},attrs:{\"label\":\"Page 2\"}},[_c('h1',[_vm._v(\"The Force is strong in this one.\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SAPView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SAPView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SAPView.vue?vue&type=template&id=819152e6\"\nimport script from \"./SAPView.vue?vue&type=script&lang=js\"\nexport * from \"./SAPView.vue?vue&type=script&lang=js\"\nimport style0 from \"./SAPView.vue?vue&type=style&index=0&id=819152e6&prod&lang=scss\"\nimport style1 from \"./SAPView.vue?vue&type=style&index=1&id=819152e6&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Draggable, Droppable, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, 'e-gridcontent') || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, 'e-gridcontent') || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup(e);\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n // tslint:disable-next-line\n var grouped = [].slice.call(_this.element.querySelectorAll('.e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[c]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column.headerText });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.querySelectorAll('.e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function (e) {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering) {\n this.animateDropper(e);\n }\n var gObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n e.target.classList.contains('e-groupdroparea') ? this.element.classList.add('e-hover') : this.element.classList.remove('e-hover');\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var gObj = this.parent;\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on('blazor-action-begin', this.blazorActionBegin, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off('blazor-action-begin', this.blazorActionBegin);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.blazorActionBegin = function () {\n if (this.parent.allowGrouping && !this.parent.isCollapseStateEnabled()) {\n this.expandAll();\n }\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (isBlazor() && gObj.isServerRendered) {\n for (var i = 0; i < gObj.columns.length; i++) {\n this.removeColFromGroupDrop(gObj.columns[i].field);\n }\n this.updateGroupDropArea();\n }\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector('tbody').children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-detailrow')) {\n grpRow = rows[i];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null)) {\n return;\n }\n var element = this.focus.getFocusedElement();\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n this.expandCollapseRows(row);\n break;\n case 'ctrlSpace':\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n column.field && gObj.groupSettings.columns.indexOf(column.field) < 0 ?\n this.groupColumn(column.field) : this.ungroupColumn(column.field);\n }\n break;\n }\n };\n Group.prototype.clickHandler = function (e) {\n this.expandCollapseRows(e.target);\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).querySelectorAll('.e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var cellIdx = trgt.cellIndex;\n var rowIdx = trgt.parentElement.rowIndex;\n var rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n var rows = [].slice.call(rowNodes).slice(rowIdx + 1, rowNodes.length);\n var isHide = void 0;\n var expandElem = void 0;\n var dataManager = void 0;\n var query = void 0;\n var toExpand = [];\n var gObj = this.parent;\n var indent = trgt.parentElement.querySelectorAll('.e-indentcell').length;\n var expand = false;\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', {\n uid: trgt.parentElement.getAttribute('data-uid'),\n isExpand: trgt.classList.contains('e-recordpluscollapse')\n });\n return;\n }\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n expand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].querySelectorAll('td')[cellIdx] &&\n rows[i].querySelectorAll('td')[cellIdx].classList.contains('e-indentcell') && rows) {\n if (isHide) {\n rows[i].style.display = 'none';\n }\n else {\n if (rows[i].querySelectorAll('.e-indentcell').length === indent + 1) {\n rows[i].style.display = '';\n expandElem = rows[i].querySelector('.e-recordplusexpand');\n if (expandElem) {\n toExpand.push(expandElem);\n }\n if (rows[i].classList.contains('e-detailrow')) {\n if (rows[i - 1].querySelectorAll('.e-detailrowcollapse').length) {\n rows[i].style.display = 'none';\n }\n }\n }\n }\n }\n else {\n break;\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n for (var i = 0, len = toExpand.length; i < len; i++) {\n removeClass([toExpand[i]], 'e-recordplusexpand');\n addClass([toExpand[i]], 'e-recordpluscollapse');\n toExpand[i].firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n this.expandCollapseRows(toExpand[i]);\n }\n }\n };\n Group.prototype.updateVisibleexpandCollapseRows = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].isDataRow && this.parent.getRowElementByUID(rows[i].uid).style.display === 'none') {\n rows[i].visible = false;\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', { isExpand: isExpand });\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[i].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[i].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n row.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n row.firstElementChild.className = isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' :\n 'e-icons e-gnextforward e-icon-grightarrow';\n }\n if (!(rowNodes[i].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[i].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n * @return {Element}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * @return {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n if (isBlazor() && gObj.isServerRendered) {\n var setVisible = [];\n setVisible[0] = column;\n this.parent.notify('setvisibility', setVisible);\n }\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[i].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n gObj.sortSettings.columns = gObj.sortSettings.columns;\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n * @return {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var gObj = this.parent;\n var i = 0;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var gObj = this.parent;\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[i].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.sortSettings.columns = this.parent.sortSettings.columns;\n }\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[i].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode \n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': 'Drag the grouped column' }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'ungroup button' }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: isBlazor() ? this.l10n.getConstant('UnGroupButton') : this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': 'ungroup the grouped column' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n var index = this.groupSettings.columns.indexOf(field);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n if (this.groupSettings.allowReordering\n && this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']')) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.querySelectorAll('.e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n //Todo: rtl \n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'Separator for the grouped columns' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[i].classList.contains('e-emptycell')) || (headers[i].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[i].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[i].querySelectorAll('.e-grptogglebtn').length) {\n remove(headers[i].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[i].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' +\n (this.groupSettings.columns.indexOf(column.field) > -1 ? 'e-toggleungroup e-icon-ungroup'\n : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1', 'aria-label': 'Group button' }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[j].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[i];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[i]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[prop].indexOf(columns[i]) === -1) {\n this.parent.getColumnByField(columns[i]).visible = true;\n }\n }\n }\n var requestType = 'requestType';\n if (isBlazor() && this.parent.isServerRendered && this.parent.isCollapseStateEnabled() &&\n args[requestType] === 'grouping') {\n this.parent.refreshHeader();\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n this.groupSettings.showDropArea ? this.element.style.display = '' : this.element.style.display = 'none';\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[i]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.querySelectorAll('.' + className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[i].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n * @return {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.isDestroyed && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.removeEventListener();\n this.refreshToggleBtn(true);\n remove(this.element);\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[i]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function (e) {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[i].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[i].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[i].field) && this.getGHeaderCell(cols[i].field).querySelectorAll('.e-groupsort').length) {\n if (cols[i].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[i]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[i]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[i];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[i] ? summaryRows[i].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords();\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[i]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[k].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[k].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[l], aggregates, null, null);\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_1 = function (j) {\n var childRow = rows[j];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_1 = _loop_1(j);\n if (state_1 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\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","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","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked } from '../base/util';\nimport { remove, debounce } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n EventHandler.add(this.dialogObj.element.querySelector('.e-searchinput'), 'keyup', this.searchHandler, this);\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[i].field,\n predicate: 'or',\n matchCase: fpred[i].ignoreCase,\n ignoreAccent: fpred[i].ignoreAccent,\n operator: fpred[i].operator,\n value: fpred[i].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = '';\n this.refreshCheckboxes();\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n this.refreshCheckboxes();\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[i];\n dataSource[i] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search')\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this)\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n createSpinner({ target: this.spinner }, this.parent.createElement);\n showSpinner(this.spinner);\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj, this.parent);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n this.parent.notify(events.filterDialogCreated, e);\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // tslint:disable-next-line:no-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n this.parent.renderTemplates();\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n /* tslint:disable-next-line:max-line-length */\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if (e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) {\n var value = e.target.value;\n if (this.options.column.type === 'boolean') {\n if (value !== '' &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = true;\n }\n else if (value !== '' &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = false;\n }\n }\n var args = {\n action: 'filtering', filterCollection: {\n field: this.options.field,\n operator: this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') :\n (this.options.column.type === 'date' || this.options.column.type === 'datetime' ||\n this.options.column.type === 'boolean' ? 'equal' : 'contains'),\n value: value, matchCase: false, type: this.options.column.type\n },\n field: this.options.field\n };\n value !== undefined && value !== null && value !== '' ? this.isForeignColumn(this.options.column) ?\n this.foreignFilter(args, value) : this.options.handler(args) : this.closeDialog();\n }\n else {\n if (e.keyCode === 13) {\n this.fltrBtnHandler();\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n this.fltrBtnHandler();\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput = this.searchBox.querySelector('.e-searchinput');\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[i], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n length = check.length - 1;\n val = this.values[parentsUntil(check[length], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n this.initiateFilter(coll);\n }\n else {\n this.clearFilter();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[j].ejpredicate !== undefined ?\n predicate[fColl[j].predicate](fColl[j].ejpredicate) :\n predicate[fColl[j].predicate](fColl[j].field, fColl[j].operator, fColl[j].value, !fColl[j].matchCase, fColl[j].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n /* tslint:disable-next-line:max-line-length */\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (isBlazor() && !this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = {};\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n filterargs.operator = (isBlazor() && filterargs.excelSearchOperator !== 'none') ?\n filterargs.excelSearchOperator : filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n if (isNullOrUndefined(parsed) && val.length) {\n return;\n }\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // tslint:disable-next-line:no-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && this.parent.getColumnByField(prop).isForeignColumn()) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[j].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n /* tslint:disable-next-line:max-line-length */\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[i];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n this.sInput.focus();\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n this.createFilterItems(dataSource, isInitial, args);\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n label.innerHTML = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('True') : this.getLocalizedLabel('False');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n if (isReactCompiler) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[i]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[uid] = getValue(key, data[i]);\n var value = getValue(this.options.field, data[i]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[i] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ||\n (isBlazor() && this.parent.isServerRendered) ? [] : data };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.result[value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[len];\n value = getObject(field, value); //local remote diff, check with mdu \n if (!(value in lookup)) {\n var obj = {};\n obj[ejValue] = value;\n lookup[value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[len]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[len], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[i].field));\n if (collection.length !== 0) {\n pred[cols[i].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var first;\n var operate = 'or';\n first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[p] = CheckBoxFilterBase.updateDateFilter(cols[p]);\n if (len > 2 && p > 1 && cols[p].predicate === 'or') {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[p], cols[p].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n if (cols[p].predicate === 'and' && cols[p].operator === 'equal') {\n predicate = predicate[operate](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[p].predicate)](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n predicate = cols[p].ejpredicate ?\n predicate[cols[p].predicate](cols[p].ejpredicate) :\n predicate[(cols[p].predicate)](cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n * @return {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n * @return {Query}\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[i].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n this.groupQuery(query);\n return query;\n };\n /** @hidden */\n Data.prototype.aggregateQuery = function (query, isForeign) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[j];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[k].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var gObj = this.parent;\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[i]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[i] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[i], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[i], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[i].field);\n if (col) {\n col.setSortDirection(columns[i].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[i].field });\n return query;\n }\n var fn = columns[i].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[i].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[i].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[i].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[i].direction === 'string') {\n query.sortBy(sortGrp[i].field, sortGrp[i].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[i].field);\n query.sortByForeignKey(sortGrp[i].field, sortGrp[i].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[i]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[i], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n if (gObj.filterSettings.type === 'FilterBar' || gObj.filterSettings.type === 'Menu') {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[i].uid = defaultFltrCols[i].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[i].field).uid;\n }\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @return {Promise}\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[promise] = crud;\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n if (isBlazor()) {\n return crud.then(function (result) {\n return _this.insert(query, args);\n }).catch(function (e) {\n return null;\n });\n }\n else {\n return crud.then(function (result) {\n return _this.insert(query, args);\n });\n }\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function (e) {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var gObj = this.parent;\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[pr] = promise ? promise : args[pr];\n this.parent.notify(events.crudAction, args);\n };\n /** @hidden */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var state = void 0;\n state = this.getStateEventArgument(query);\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var data = 'data';\n if (isBlazor() && this.parent.isServerRendered) {\n for (var i = 0; i < changes[changedRecords].length; i++) {\n var args = { data: changes[changedRecords][i] };\n this.parent.notify('offset', args);\n changes[changedRecords][i] = args[data];\n }\n for (var i = 0; i < changes[addedRecords].length; i++) {\n var args = { data: changes[addedRecords][i] };\n this.parent.notify('offset', args);\n changes[addedRecords][i] = args[data];\n }\n }\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /** @hidden */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value, index) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var state;\n var dataArgs = args;\n state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function (e) {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n * @return {string[]}\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SAPView.vue?vue&type=style&index=0&id=819152e6&prod&lang=scss\"","import { isBlazor, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { closest, classList, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Grid } from '../base/grid';\nimport { parents, getUid, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nvar DetailRow = /** @class */ (function () {\n /**\n * Constructor for the Grid detail template module\n * @hidden\n */\n function DetailRow(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.focus = locator.getService('focus');\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.expandChildGrid, this.expand, this);\n this.parent.on(events.columnVisibilityChanged, this.refreshColSpan, this);\n }\n DetailRow.prototype.clickHandler = function (e) {\n this.toogleExpandcollapse(closest(e.target, 'td'));\n };\n // tslint:disable-next-line:max-func-body-length\n DetailRow.prototype.toogleExpandcollapse = function (target) {\n var gObj = this.parent;\n var table = this.parent.getContentTable();\n var lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n var parent = 'parentDetails';\n var isServerRendered = 'isServerRendered';\n var childGrid;\n var isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))) {\n return;\n }\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.notify('detailclick', target);\n return;\n }\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var nextRow = this.parent.getContentTable().querySelector('tbody').children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n var data = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(events.detailStateChange, { data: data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n var rowId = getUid('grid-row');\n var detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId } });\n var detailCell = this.parent.createElement('td', { className: 'e-detailcell' });\n var colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell.setAttribute('colspan', colSpan.toString());\n var row = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (var i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-detailindentcell' }));\n detailRow.appendChild(detailCell);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n if (gObj.detailTemplate) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.detailTemplate) !== 'string';\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n if (isReactCompiler) {\n gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID, null, null, detailCell);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(detailCell, gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID));\n }\n if (isBlazor()) {\n updateBlazorTemplate(detailTemplateID, 'DetailTemplate', gObj, false);\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: data[gObj.childGrid.queryString],\n parentRowData: data\n };\n childGrid.isLegacyTemplate = gObj.isReact\n || gObj.isLegacyTemplate;\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(events.contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(events.onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n var modules = childGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n var gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid('')\n });\n detailCell.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n gObj.getRows().splice(tr.rowIndex + 1, 0, detailRow);\n gObj.getRowsObject().splice(rowObj.index + 1, 0, row);\n gObj.trigger(events.detailDataBound, { detailElement: detailCell, data: data, childGrid: childGrid });\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n var detailrowIdx = table.querySelector('tbody').querySelectorAll('.e-detailrow').length - 1;\n addClass(table.querySelector('tbody').querySelectorAll('.e-detailrow')[detailrowIdx].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(events.detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute('aria-rowindex'), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n };\n /**\n * @hidden\n * @param gObj\n * @param rowObj\n */\n DetailRow.prototype.getGridModel = function (gObj, rowObj, printMode) {\n var gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = gObj.expandedRows[rowObj.index].gridModel;\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n gridModel = gObj.childGrid;\n }\n else {\n gridModel = gObj.childGrid;\n }\n }\n return gridModel;\n };\n DetailRow.prototype.promiseResolve = function (grid) {\n var _this = this;\n return function () {\n grid.off(events.contentReady, _this.promiseResolve);\n grid.off(events.onEmpty, _this.promiseResolve);\n grid.notify(events.hierarchyPrint, {});\n };\n };\n DetailRow.prototype.isDetailRow = function (row) {\n return row && row.classList.contains('e-detailrow');\n };\n DetailRow.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.expandChildGrid, this.expand);\n this.parent.off(events.columnVisibilityChanged, this.refreshColSpan);\n };\n DetailRow.prototype.getTDfromIndex = function (index, className) {\n var tr = this.parent.getDataRows()[index];\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n };\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n DetailRow.prototype.expand = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n DetailRow.prototype.collapse = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n DetailRow.prototype.expandAll = function () {\n this.expandCollapse(true);\n this.parent.trigger(events.actionComplete, { requestType: 'expandAllComplete', type: events.actionComplete, moduleObj: this });\n };\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n DetailRow.prototype.collapseAll = function () {\n this.expandCollapse(false);\n this.parent.trigger(events.actionComplete, { requestType: 'collapseAllComplete', type: events.actionComplete, moduleObj: this });\n };\n DetailRow.prototype.expandCollapse = function (isExpand) {\n var td;\n var rows = this.parent.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n td = rows[i].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n isExpand ? this.expand(td) : this.collapse(td);\n }\n };\n DetailRow.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n e.action === 'altDownArrow' ? this.expand(td) : this.collapse(td);\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n var element = this.focus.getFocusedElement();\n if (!e.target.classList.contains('e-detailrowcollapse') &&\n !e.target.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n };\n DetailRow.prototype.refreshColSpan = function () {\n var detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n var colSpan = this.parent.getVisibleColumns().length;\n for (var i = 0; i < detailrows.length; i++) {\n detailrows[i].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n return DetailRow;\n}());\nexport { DetailRow };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/#custom-component-in-filter-menu) for its customization.\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /** @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /** @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = (isBlazor() && !isNullOrUndefined(this.template) && isNullOrUndefined(this.field)) ? 'none' : null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || options.format.format)) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', isBlazor() ? ' ' : 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'columns') {\n col[keys[i]] = [];\n for (var j = 0; j < _this[keys[i]].length; j++) {\n col[keys[i]].push(_this[keys[i]][j].toJSON());\n }\n }\n else if (skip.indexOf(keys[i]) < 0) {\n col[keys[i]] = _this[keys[i]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function comparer(x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /** @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /** @hidden */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /** @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /** @hidden */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact && keys[i] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid);\n }\n }\n };\n /**\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /** @hidden */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /** @hidden */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /** @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /** @hidden */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /** @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /** @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /** @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n * @hidden\n */\n function Scroll(parent) {\n this.lastScrollTop = 0;\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.e-content');\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent().querySelector('tbody');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.querySelectorAll('.e-addedrow').length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right' ? '0.5px' : '1px';\n content.querySelector('.e-headercontent').style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.e-headercontent');\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](grid/#height/) must be set to 100%.\n * @return\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.e-gridcontent';\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.e-headercontent').scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains('e-headercontent');\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var sLimit = target.scrollWidth;\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector('tbody') === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.e-movableheader') :\n _this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.e-movablecontent') :\n _this.parent.getContent().querySelector('.e-content');\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.e-content');\n this.header = this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = this.content.querySelector('.e-movablecontent');\n var fCont = this.content.querySelector('.e-frozencontent');\n var mHdr = this.header.querySelector('.e-movableheader');\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (sHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.isFrozenGrid()) {\n addClass(_this.parent.getContent().querySelector('.e-movablecontent').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft =\n _this.content.querySelector('.e-movablecontent').scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[width]));\n };\n /**\n * @hidden\n */\n Scroll.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.removeEventListener();\n //Remove padding\n this.removePadding();\n var cont = this.parent.getContent().querySelector('.e-content');\n removeClass([this.parent.getHeaderContent().querySelector('.e-headercontent')], 'e-headercontent');\n removeClass([cont], 'e-content');\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n //Remove Dom event\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n };\n /**\n * Function to get the scrollbar width of the browser.\n * @return {number}\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[i].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid) || (this.parent.isRowDragable() && !start)) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[i], data[i], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel(raw);\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.isRowDragable()) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[i], summaryRow, i >= indentLength ? this.getCellType() :\n i < this.parent.groupSettings.columns.length ? CellType.Indent : CellType.DetailFooterIntent, indents[i], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n if (isBlazor() && this.parent.isServerRendered && !isNullOrUndefined(parentUid)) {\n row.uid = this.parent.getRowUid('grid-row');\n }\n else {\n row.uid = getUid('grid-row');\n }\n row.parentUid = parentUid;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n var key = '';\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[i].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[j], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function (data) {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[i].toLowerCase();\n var disp = column.columnName;\n var val = types[i] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[key] :\n calculateAggregate(types[i], group.aggregates ? group : data, column, this.parent);\n single[disp] = single[disp] || {};\n single[disp][key] = val;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[disp].field = group.field;\n single[disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","/**\n * AriaService\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[i]], options[props[i]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","import { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n * @param args\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputElement;\n var floatLinelement;\n var floatLabelElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button) {\n if (value) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label) {\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function wireClearBtnEvents(element, button, container) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button);\n });\n element.addEventListener('blur', function (event) {\n setTimeout(function () { addClass([button], CLASSNAMES.CLEARICONHIDE); }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n * @param value - Specify the value of the input element.\n * @param element - The element on which the specified value is updated.\n * @param floatLabelType - Specify the float label type of the input element.\n * @param clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n * @param cssClass - Css class names which are needed to add.\n * @param elements - The elements which are needed to add / remove classes.\n * @param oldClass - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n * @param width - Width value which is need to add.\n * @param container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n * @param placeholder - Placeholder value which is need to add.\n * @param element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n var parentElement;\n placeholder = encodePlaceHolder(placeholder);\n parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder, 'aria-placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n element.removeAttribute('aria-placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n * @param isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n * @param isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n * @param isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n * @param attrs\n * - Array of attributes which are need to removed from the element.\n * @param element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = void 0;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n * @param attrs\n * - Array of attributes which is added to element.\n * @param element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = void 0;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[key];\n }\n else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type, customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n * @param isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param inputObject\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[i].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n var ele = this;\n setTimeout(function () { ele.classList.remove('e-input-btn-ripple'); }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function addIcon(position, icons, container, input, internalCreate) {\n // tslint:enable\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n // tslint:enable\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n","import { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n * @hidden\n */\n function Reorder(parent) {\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var cols = this.parent.columns;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[i]) {\n return true;\n }\n else if (cols[i].columns) {\n var cnt = parent.length;\n parent.push(cols[i]);\n if (!this.findColParent(col, cols[i].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols) {\n var columnModel = [];\n var subCols = [];\n var isFrozen = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid();\n if (isFrozen) {\n return this.parent.getColumns();\n }\n else {\n for (var i = 0, len = cols.length; i < len; i++) {\n columnModel.push(cols[i]);\n if (cols[i].columns) {\n subCols = subCols.concat(cols[i].columns);\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var bool = columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n var column_2 = columns[oldIdx];\n this.moveColumns(newIndex, column_2);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var isFrozen = !gObj.getFrozenColumns() && gObj.isFrozenGrid();\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : isFrozen ? this.parent.getColumns() : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if (((this.parent.isFrozenGrid() && parent) || this.parent.lockcolPositionCount) && !reorderByColumn) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var isFrozen = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid();\n var cols = isFrozen ? this.parent.getColumns() : this.parent.columns;\n var headers = this.getHeaderCells();\n var flatColumns = this.getColumnsModel(cols);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getHeaderCells = function () {\n var frozenColumns = this.parent.getFrozenColumns();\n if (frozenColumns || this.parent.lockcolPositionCount) {\n var fTh = void 0;\n var mTh = void 0;\n var fHeaders = [];\n var fRows = [].slice.call(this.parent.getHeaderTable().querySelectorAll('.e-columnheader'));\n if (frozenColumns) {\n var mRows = [].slice.call(this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelectorAll('.e-columnheader'));\n for (var i = 0; i < fRows.length; i++) {\n fTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n mTh = [].slice.call(mRows[i].getElementsByClassName('e-headercell'));\n var isAvail = void 0;\n for (var k = 0; k < fTh.length; k++) {\n for (var j = 0; j < mTh.length; j++) {\n if (mTh[j].innerText === fTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([fTh[k]]);\n }\n }\n for (var j = 0; j < mTh.length; j++) {\n fHeaders.push(mTh[j]);\n }\n }\n }\n else {\n for (var i = 0; i < fRows.length; i++) {\n mTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n for (var k = 0; k < mTh.length; k++) {\n var isAvail = void 0;\n for (var j = k + 1; j < mTh.length; j++) {\n if (mTh[j].innerText === mTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([mTh[k]]);\n }\n }\n }\n }\n return fHeaders;\n }\n else {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n }\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || fColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[i]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[i]), true, !(isBlazor() && !this.parent.isJsComponent));\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n var cols_1 = this.parent.getColumns();\n this.parent.notify(events.modelChanged, {\n fromColumnUid: fromFNames.map(function (name) { return cols_1.filter(function (col) { return col.field === name; })[0].uid; }),\n toColumnUid: toColumn.uid,\n isMultipleReorder: true,\n requestType: 'reorder',\n type: 'actionBegin'\n });\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n var column = this.parent.getColumnByField(fieldName);\n this.moveTargetColumn(column, toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[i], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @return {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n var column = this.parent.getColumnByIndex(fromIndex);\n this.moveTargetColumn(column, toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n typeof fieldName === 'string' ? this.reorderSingleColumnByTarget(fieldName, toIndex) :\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.e-headercontent');\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n * @return {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n remove(this.upArrow);\n remove(this.downArrow);\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass(gObj.getHeaderTable().querySelectorAll('.e-reorderindicate'), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell \n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target))) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n if (this.parent.isFrozenGrid()) {\n this.updateFrozenScrollPosition(x, cliRect);\n }\n else {\n var cliRectBaseLeft = cliRect.left;\n var scrollElem_1 = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, false); }, 50);\n }\n }\n };\n Reorder.prototype.updateFrozenScrollPosition = function (x, cliRect) {\n var _this = this;\n var scrollElem = this.parent.getContent().querySelector('.e-movablecontent');\n var mhdrCliRect = this.parent.element.querySelector('.e-movableheader').getBoundingClientRect();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var cliRectBaseRight = right ? mhdrCliRect.right : cliRect.right;\n var cliRectBaseLeft = left ? mhdrCliRect.left : cliRect.left;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n if (this.parent.isFrozenGrid() && target.classList.contains('e-headercell')) {\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var dropEle = this.element.querySelector('.e-headercelldiv');\n var dropCol = dropEle ? this.parent.getColumnByUid(dropEle.getAttribute('data-uid')) : null;\n var col = this.parent.getColumnByUid(target.firstElementChild.getAttribute('e-mappinguid'));\n var fhdrWidth = Math.round(this.parent.getFrozenVirtualHeader().getBoundingClientRect().right);\n var mhdrRight = Math.round(this.parent.getMovableVirtualHeader().getBoundingClientRect().right);\n if (col) {\n if (left && !right && this.parent.getNormalizedColumnIndex(col.uid) >= left\n && ((isLeft && Math.round(cliRect.left) < fhdrWidth) || (!isLeft && mhdrRight < cliRect.right))) {\n return;\n }\n if (!left && right && dropCol && dropCol.getFreezeTableName() !== col.getFreezeTableName()\n && (!isLeft && Math.round(cliRect.right) < fhdrWidth)) {\n return;\n }\n }\n }\n this.upArrow.style.top = cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass(gObj.getHeaderTable().querySelectorAll('.e-reorderindicate'), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\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, AjaxAdaptor } 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 AjaxAdaptor ?\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.isAjaxAdaptor(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.isAjaxAdaptor(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.isAjaxAdaptor(_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.isAjaxAdaptor(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.isAjaxAdaptor(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.isAjaxAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'AjaxAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isAjaxAdaptor(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.isAjaxAdaptor(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","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var topData = '';\n var leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, axis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null };\n var eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n };\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\nfunction leftCollideCheck(left, right) {\n var leftSide = false;\n var rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left >= ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topCollideCheck(top, bottom) {\n var topSide = false;\n var bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : document.documentElement.offsetWidth;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n (positionY + positionX === 'topright') ? popupRect = undefined : popupRect = targetValues;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\nfunction setPosx(value, pos) {\n pos.left = value;\n}\nfunction setPosy(value, pos) {\n pos.top = value;\n}\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n return pos;\n}\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\nfunction getElementRight() {\n return elementRect.right + getBodyScrollLeft() - (popupRect ? popupRect.width : 0);\n}\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var r = _a[_i];\n if (r.index === row.index) {\n _this[count] = row;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(row);\n }\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","import { CompressedStreamWriter } from './compression-writer';\nimport { Save } from '@syncfusion/ej2-file-utils';\nvar CRC32TABLE = [];\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n CsvHelper.prototype.saveAsBlob = function () {\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + value.substring(0, startindex) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + text + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n Workbook.prototype.saveAsBlob = function (blobSaveType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob();\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n * @hidden\n */\n function ExcelExport(parent, locator) {\n /* tslint:disable-next-line:no-any */\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isElementIdChanged = false;\n this.foreignKeyData = {};\n this.gridPool = {};\n this.sheet = {};\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {isCsv} isCsv - true if export to CSV.\n * @return {Promise}\n */\n /* tslint:disable-next-line:max-line-length */\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[cancel]) {\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[isBlb];\n if (args[csv]) {\n this.isCsvExport = args[csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[isMultiEx], args[workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n this.sheet.images = [];\n };\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n if (!(exportProperties.dataSource instanceof DataManager)) {\n exportProperties.dataSource = new DataManager(exportProperties.dataSource);\n }\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve, reject) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n /* tslint:disable-next-line:max-func-body-length */\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n /* tslint:disable-next-line:max-line-length */\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n /* tslint:disable-next-line:no-any */\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var autoFilters = {\n row: colDepth, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isBlazor() && gObj.isServerRendered) {\n _this.book.isServerRendered = gObj.isServerRendered;\n }\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n /* tslint:disable-next-line:max-line-length */\n var book = new Workbook(_this.book, 'csv', gObj.locale, gObj.currencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, gObj.currencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj);\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n /* tslint:disable-next-line:max-line-length */\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, exportProperties.dataSource, excelRows, helper);\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords)) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.processGroupedRows = function (gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n /* tslint:disable-next-line:no-any */\n var cell = {};\n cell.index = index + level;\n var col = gObj.getColumnByField(item.field);\n /* tslint:disable-next-line:no-any */\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn(),\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel' };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, dataSource.level + dataSource.childLevels, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n /* tslint:disable-next-line:no-any */\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level), true);\n }\n }\n };\n /* tslint:disable-next-line:max-func-body-length */\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[c];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n /* tslint:disable-next-line:no-any */\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n /* tslint:disable-next-line:no-any */\n var excelImage = {\n image: excelCellArgs.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n this.sheet.images.push(excelImage);\n templateRowHeight = excelCellArgs.image.height || 50;\n this.columns[idx - 1].width = excelCellArgs.image.width || this.columns[idx - 1].width;\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[styleIndex], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n /* tslint:disable-next-line:no-any */\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength < 8 && level > 0) {\n excelRow.grouping = { outlineLevel: level, isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[i].grouping = { outlineLevel: intent + childGridObj.childGridLevel,\n isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n // tslint:disable-next-line:max-line-length\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n // tslint:disable-next-line:max-line-length\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n /* tslint:disable-next-line:no-any */\n var eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n var level = excelRows[excelRows.length - 1][dummyGrouping][dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return txt[0].textContent;\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON1[attrname[index]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON2[attrname[index]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[row].cells.length; column++) {\n /* tslint:disable-next-line:no-any */\n var style = {};\n var cell = {};\n var gridCell = gridRows[row].cells[column];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n excelRows.push({ index: this.rowLength++, cells: cells });\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[row];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[cellId];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[row];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto') {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n /**\n * To destroy the excel export\n * @return {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](grid/#printmode-string/).\n * @return {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[i] = extend({}, printGrid.columns[i]);\n printGrid.columns[i].freeze = undefined;\n }\n }\n /* tslint:disable-next-line:no-any */\n if (this.parent.isAngular) {\n /* tslint:disable-next-line:no-any */\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n /* tslint:disable:no-empty */\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.appendTo(element);\n printGrid.trigger = gObj.trigger;\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.e-content');\n var headerDiv = gObj.element.querySelector('.e-gridheader');\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.querySelectorAll('.e-content')); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = gObj.element.querySelectorAll('.e-spin-show');\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll(id + \"captioncell.e-groupcaption\", element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[i].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colGroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[i].children[j].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SAPView.vue?vue&type=style&index=1&id=819152e6&prod&lang=css\"","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","var 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 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 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 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(this.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 (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 else {\n return [];\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) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper);\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) {\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);\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, true);\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) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + 'var ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys)\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);\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)) +\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) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, emptyStrCheck) {\n /* istanbul ignore next */\n if (emptyStrCheck && str === '') {\n return str;\n }\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? 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, emptyStrCheck) {\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, emptyStrCheck);\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 if (ele && classList) {\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 }\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 if (ele && classList) {\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 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 }\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 if (ele) {\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\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 }\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 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 */\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}\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//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//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 this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\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 if (!this.clone) {\n this.getScrollableValues();\n pageY -= this.tempScrollHeight ? this.parentScrollY : 0;\n pageX -= this.tempScrollWidth ? this.parentScrollY : 0;\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/).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","/**\n * index\n */\nexport * from './src/index';\n","import { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\n/**\n * RowRenderer class which responsible for building row content.\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /**\n * Function to render the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /**\n * Function to refresh the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n node.innerHTML = '';\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var attrCopy = extend({}, attributes, {});\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n if (row.isDataRow) {\n row.isSelected = this.parent.getSelectedRowIndexes().indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (this.parent.getSelectedRowIndexes().indexOf(row.index) === -1) {\n this.parent.getSelectedRowIndexes().push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, attrCopy);\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_1 = function (i, len) {\n var cell = row.cells[i];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !this_1.parent.getRowsObject()[row.index - 1].isDataRow ?\n this_1.parent.getRowsObject()[row.index].cells : this_1.parent.getRowsObject()[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[i].column[uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[i].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_1(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n var summarycell = tr.querySelectorAll('.e-summarycell');\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /**\n * Function to check and add alternative row css class.\n * @param {Element} tr\n * @param {{[x:string]:Object}} attr\n */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': 'aria-rowindex', 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push('e-row');\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n var isServerRendered = 'isServerRendered';\n options.uid = isBlazor() && this.parent[isServerRendered] ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[index]) {\n options.isExpand = this.parent.expandedRows[index].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization && this.parent.selectionModule.checkBoxState) {\n options.isSelected = this.parent.selectionModule.checkBoxState;\n if (options.isSelected && this.parent.selectionModule.selectedRowIndexes.indexOf(index) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(index);\n }\n }\n else {\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n }\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = isBlazor() ? new Row(options) :\n new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[i].field, getForeignData(foreignKeyColumns[i], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","/**\n * Defines types of Cell\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n * @private\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER, 'role': role, 'aria-checked': 'false' });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n * @private\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n * @private\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label', innerHTML: options.label });\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n * @private\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove, updateBlazorTemplate, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the Tooltip Component\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isBlazorTooltip = false;\n _this.contentTargetValue = null;\n _this.contentEvent = null;\n _this.contentAnimation = null;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n if (!(this.isServerRender())) {\n addClass([this.element], ROOT);\n }\n };\n Tooltip.prototype.isServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n if (!(this.isServerRender())) {\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n }\n else {\n var tip = this.tooltipEle.querySelector('.' + ARROW_TIP);\n addClass([tip.querySelector('.' + ARROW_TIP_OUTER)], this.tipClass);\n addClass([tip.querySelector('.' + ARROW_TIP_INNER)], this.tipClass);\n this.tooltipEle.appendChild(tip);\n }\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n var offsetPos = this.calculateTooltipOffset(this.position);\n var elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.reposition = function (target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n };\n Tooltip.prototype.closePopupHandler = function () {\n resetBlazorTemplate(this.element.id + 'content', 'Content');\n this.clearTemplate(['content']);\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = this.tooltipEle.querySelectorAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = this.tooltipEle.querySelector('.' + CONTENT);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n if (this.isBlazorTooltip || !(this.isServerRender())) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string' && this.content.indexOf('
Blazor') < 0) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent[this.enableHtmlParse ? 'innerHTML' : 'textContent'] = this.content;\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n if (typeof this.content === 'string' && this.content.indexOf('
Blazor') >= 0) {\n this.isBlazorTemplate = true;\n updateBlazorTemplate(this.element.id + 'content', 'Content', this);\n }\n }\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(document.querySelectorAll('[data-tooltip-id= ' + this.ctrlId + '_content]'));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n var isBlazorTooltipRendered = false;\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.contentTargetValue = target;\n this.contentEvent = e;\n this.contentAnimation = showAnimation;\n var args = { 'enableTooltip': 'true' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n isBlazorTooltipRendered = true;\n }\n else {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.beforeRenderBlazor(target, this);\n }\n if (!isBlazorTooltipRendered) {\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n else {\n if (this.isServerRender()) {\n addClass([this.tooltipEle], POPUP_OPEN);\n document.body.appendChild(this.tooltipEle);\n this.renderCloseIcon();\n this.renderPopup(target);\n }\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n }\n };\n ;\n Tooltip.prototype.contentUpdated = function (args) {\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.ctrlId = this.element.id;\n this.tooltipEle = document.querySelector('#' + this.ctrlId + '_content');\n if (this.tooltipEle) {\n this.tooltipEle.setAttribute('style', 'width:' + formatUnit(this.width) +\n ';height:' + formatUnit(this.height) + ';position:absolute;');\n this.beforeRenderBlazor(this.contentTargetValue, this);\n this.afterRenderBlazor(this.contentTargetValue, this.contentEvent, this.contentAnimation, this);\n this.contentTargetValue = this.contentEvent = this.contentAnimation = null;\n }\n }\n }\n };\n ;\n Tooltip.prototype.beforeRenderBlazor = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n if (!(this.isServerRender())) {\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n }\n document.body.appendChild(ctrlObj.tooltipEle);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.afterRenderBlazor = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // tslint:disable-next-line:no-any\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string'\n || (this.isServerRender()) && this.isBlazorTemplate;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.isServerRender()) {\n _this.blazorHide(hideAnimation, target);\n }\n else {\n _this.popupHide(hideAnimation, target);\n }\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n /* istanbul ignore next */\n Tooltip.prototype.blazorHide = function (hideAnimation, target) {\n var proxy = this;\n var hide = function () {\n proxy.popupHide(hideAnimation, target);\n };\n if (this.popupObj) {\n this.popupHide(hideAnimation, target);\n }\n else {\n setTimeout(hide, 200);\n }\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.isServerRender() && this.tooltipEle) {\n this.tooltipEle.style.display = 'none';\n var args = { 'enableTooltip': 'false' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n remove(this.tooltipEle);\n }\n else if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n * @private\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n * @hidden\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.add(this.element, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n if (!this.isServerRender()) {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n * @hidden\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.remove(this.element, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n if (!this.isServerRender()) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n return target;\n };\n /**\n * Core method to return the component name.\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n if (this.isServerRender()) {\n this.isBlazorTooltip = true;\n }\n this.renderContent();\n }\n else if (this.isServerRender()) {\n var args = { 'content': newProp.content };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n * @param element Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param animation Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @return {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n * @param animation Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @return {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n * @param target Target element where the Tooltip content or position needs to be refreshed.\n * @return {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @return {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n if (!this.isServerRender()) {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n }\n if (this.isServerRender() && this.tooltipEle) {\n var placeholder = document.querySelector('#' + this.ctrlId + '_content_placeholder');\n if (placeholder) {\n placeholder.appendChild(this.tooltipEle);\n }\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.querySelectorAll('.e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var result = void 0;\n var colIndex = gObj.getColumnIndexByField(col.field);\n result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.e-gridheader');\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.e-headercontent') :\n this.parent.createElement('div', { className: 'e-headercontent' });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header table\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.e-table'));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n * @param {Element} panel\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n * @param {Element} table\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n * @return {Element[]}\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n * @return {Element}\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n if (!skipDom) {\n innerDiv.appendChild(table);\n }\n return innerDiv;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (!(isBlazor() && !gObj.isJsComponent) && this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var columns = gObj.getColumns();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n var table = skipDom ? tableEle || innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement('tbody', { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement('colgroup');\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, this.parent);\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[i].cells.length; j < len_1; j++) {\n var cell = rows[i].cells[j];\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n if (!skipDom) {\n tbody.appendChild(rowBody);\n }\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n if (!skipDom) {\n table.appendChild(tbody);\n }\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead');\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[index]) {\n var colFreezeMode = rows[0].cells[index].column.getFreezeTableName();\n if (colFreezeMode === 'movable' || (frozenMode === 'Left-Right' && colFreezeMode === 'frozen-right')) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === 'frozen-left') {\n rows[0].cells[0].column.freeze = colFreezeMode === 'frozen-left' ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === 'frozen-right') {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + 'colGroup';\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[i].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[i].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var column;\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName) {\n var lastCol = isLastCol ? 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen)\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol && len !== 1;\n var isLaststackedCol = i === (len - 1);\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1, isLaststackedCol && isLastCol, isMovable, tableName);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n isTrue = this.ensureStackedFrozen(columns[i].columns, tableName, isTrue);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n count = this.getFrozenColSpan(columns[i].columns, tableName, count);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n count++;\n }\n }\n return count;\n };\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n * @param {Column[]} columns?\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = [].slice.call(this.getRows()); //NodeList -> Array \n var displayVal;\n var idx;\n var className;\n var element;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(this.getTable().querySelector('colgroup').children[idx], { 'display': displayVal });\n setStyleAttribute(this.getTable().querySelectorAll('th')[idx], { 'display': displayVal });\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup');\n var mTbl = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('table');\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(mTbl.querySelectorAll('th')[idx - frzCols], { 'display': displayVal });\n }\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n if (isBlazor() && this.parent.isServerRendered && this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.freezeReorder = true;\n }\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var setFrozenTable = isBlazor() && this.parent.isServerRendered && this.parent.frozenRows !== 0 && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table')\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (setFrozenTable && !isVFTable) {\n table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table') :\n this.headerPanel.querySelector('.e-frozenheader').querySelector('.e-table');\n }\n if (table) {\n if (isBlazor() && this.parent.isServerRendered) {\n table.removeChild(table.querySelector('colgroup'));\n table.removeChild(table.querySelector('thead'));\n }\n else {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n }\n var colGroup = this.parent.createElement('colgroup');\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable && !setFrozenTable) {\n this.setTable(table);\n }\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.appendContent(table);\n }\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, 'e-movableheader')) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.e-headercontent').appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[i], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar && (gObj.allowSorting || gObj.allowFiltering)) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({});\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.e-gridheader'));\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { role: 'columnheader', tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons' });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Cell} cell\n * @param {Element} node\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid,\n });\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[count].field === column.field || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[count].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (column.allowSorting) {\n ariaAttr.sort = 'none';\n }\n if (column.allowGrouping) {\n ariaAttr.grabbed = false;\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = isBlazor() ? column.toJSON() : column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n if (isReactCompiler) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[str]);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu' }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[j].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n role: 'columnheader',\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, column.headerText, column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var result;\n var helper = {};\n var fKeyValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n if (isBlazor()) {\n var tempID = gObj.element.id + 'captionTemplate';\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, null, null, tempID);\n }\n else {\n if (isReactCompiler) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node.innerHTML = cell.column.headerText + ': ' + value;\n }\n else {\n node.innerHTML = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'));\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + ' is groupcaption cell');\n node.setAttribute('title', node.innerHTML);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n * @param {Cell} cell\n * @param {Object} data\n * @param {{ [x: string]: string }} attr\n * @param {boolean} isExpand\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n node.appendChild(this.parent.createElement('div', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow'\n }));\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow' }));\n }\n else {\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow' }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon'\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, updateBlazorTemplate, blazorTemplates, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n var isServerRendered = 'isServerRendered';\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n if (!(isBlazor() && this.parent[isServerRendered])) {\n this.refreshDataManager();\n }\n };\n /**\n * Refresh the entire Grid.\n * @return {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n var preventUpdate = 'preventUpdate';\n gObj.notify(e.requestType + \"-begin\", e);\n if (isBlazor()) {\n this.resetTemplates();\n }\n if (isBlazor() && gObj.isServerRendered) {\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].dataSource) {\n delete gObj[bulkChanges].dataSource;\n }\n gObj.notify('blazor-action-begin', e);\n if (e.requestType === 'filtering') {\n var columns = 'columns';\n e[columns] = null;\n }\n if (e.requestType === 'sorting') {\n var target = 'target';\n e[target] = null;\n }\n if (gObj.editSettings.mode === 'Batch' && !gObj.isEdit) {\n gObj.notify('closebatch', {});\n }\n }\n var tempPreventUpdate = this.parent[preventUpdate];\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.requestType === 'delete' && isBlazor() && !gObj.isJsComponent) {\n var data = 'data';\n if (isNullOrUndefined(gObj.commandDelIndex)) {\n args[data] = gObj.getSelectedRecords();\n }\n else {\n var tempSelectedRecord = args[data];\n args[data] = {};\n args[data][0] = tempSelectedRecord;\n }\n }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (isBlazor() && gObj.editSettings.mode === 'Normal' && gObj.isEdit && e.requestType !== 'infiniteScroll') {\n gObj.notify('closeinline', {});\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n if (!(currentViewData - dataLength) && count && currentViewData !== dataLength) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (isBlazor() && _this.parent.isServerRendered) {\n if (tempPreventUpdate) {\n var bulkChanges = 'bulkChanges';\n gObj[bulkChanges] = {};\n return;\n }\n if (e.requestType === 'refresh') {\n _this.parent.notify('updateaction', args);\n }\n if (args.requestType !== 'virtualscroll') {\n _this.parent.showSpinner();\n }\n if (args.requestType === 'delete' || args.requestType === 'save') {\n _this.parent.notify(events.addDeleteAction, args);\n _this.parent.notify('add-delete-success', args);\n }\n else {\n _this.parent.allowServerDataBinding = true;\n _this.parent.serverDataBind();\n _this.parent.allowServerDataBinding = false;\n }\n }\n else if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && _this.parent.contentModule.getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].template) {\n blazorTemplates[gObj.element.id + gridColumns[i].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid, 'Template');\n }\n if (gridColumns[i].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[i].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[k].columns.length; j++) {\n if (gObj.aggregates[k].columns[j].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n * @return {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n if (args.requestType !== 'virtualscroll') {\n this.parent.showSpinner();\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.e-content'), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n if (isBlazor() && !this.parent.isJsComponent) {\n promise.then(function (e) {\n _this.parent.notify('editsuccess', args);\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n _this.parent.trigger(events.actionFailure, e);\n });\n }\n else {\n var query_1 = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n promise.then(function (e) {\n _this.data.getData(args, query_1)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n * @return {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector('tbody');\n var tr;\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement('tbody');\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getColumns().length + spanCount).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[i].field || '', data);\n if (!isNullOrUndefined(columns[i][cFormat])) {\n columns[i].format = columns[i][cFormat];\n }\n if (!isNullOrUndefined(columns[i].validationRules) && !isNullOrUndefined(columns[i].validationRules[equalTo])) {\n columns[i].validationRules[equalTo][0] = this.parent.element.id + columns[i].validationRules[equalTo][0];\n }\n if (columns[i].isForeignColumn() && columns[i].columnData) {\n value = getObject(columns[i].foreignKeyValue || '', columns[i].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[i].type || (isBlazor() && this.parent.isServerRendered && columns[i].type === 'none')) {\n columns[i].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[i].type = columns[i].type || (isBlazor() && this.parent.isServerRendered ? 'none' : null);\n }\n var valueFormatter = new ValueFormatter();\n if (columns[i].format && (columns[i].format.skeleton || columns[i].format.format)) {\n columns[i].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[i].format)));\n columns[i].setParser(valueFormatter.getParserFunction(columns[i].format));\n }\n if (typeof (columns[i].format) === 'string') {\n var isServerRendered = 'isServerRendered';\n var isServerDateMap = this.parent[isServerRendered] || this.parent.printModule.isPrintGrid();\n setFormatter(this.locator, columns[i], isServerDateMap);\n }\n else if (!columns[i].format && columns[i].type === 'number') {\n columns[i].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /** @hidden */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && (args.requestType === 'delete' || (args.requestType === 'save' && this.parent.infiniteScrollModule.requestType === 'add'));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (isBlazor() && gObj.filterSettings.type === 'FilterBar'\n && (isNullOrUndefined(gObj.currentViewData) ||\n (!isNullOrUndefined(gObj.currentViewData) && !gObj.currentViewData.length))) {\n var gridColumns = gObj.getColumns();\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].filterTemplate) {\n var tempID = gObj.element.id + gridColumns[i].uid + 'filterTemplate';\n resetBlazorTemplate(tempID, 'FilterTemplate');\n var fieldName = gridColumns[i].field;\n var filteredColumns = gObj.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName === filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(tempID, 'FilterTemplate', gridColumns[i], false);\n }\n }\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.e-content'), false);\n _this.renderEmptyRow();\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n });\n };\n /** @hidden */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.e-content'), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n var gObj = this.parent;\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[i]] === 'object' && obj[keys[i]] && !(obj[keys[i]] instanceof Date) ?\n Object.keys(obj[keys[i]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[i]], field + (keys[i] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[i];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[e] !== 'BlazId'; }).\n map(function (field) { return complexCols[field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[i] = { 'field': columns[i] };\n if (this.parent.enableColumnVirtualization) {\n cols[i].width = !isNullOrUndefined(cols[i].width) ? cols[i].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /** @hidden */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[index];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[i].field).and(_this.getPredicate('key', 'equal', groups[i].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote() || isBlazor()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[i].field, 'equal', groups[i].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[i].field).and(this.getPredicate('key', 'equal', elements[i].key))))[0];\n elements[i].count = uGroup.count;\n var itemGroup = elements[i].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[i].items = this.updateGroupInfo(elements[i].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[k].type instanceof Array ? (row.columns[k].type) :\n [(row.columns[k].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[k].field + ' - ' + types[l].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[l] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n elements[i].aggregates[key] = row.columns[k].customAggregate ?\n row.columns[k].customAggregate\n .call(context, data_1, row.columns[k]) : '';\n }\n else {\n elements[i].aggregates[key] = DataUtil.aggregates[types[l].toLowerCase()](data, row.columns[k].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n this.cellRenderMap[name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n /**\n * Constructor for Grid Responsive dialog renderer\n * @hidden\n */\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.parent.on(events.filterDialogClose, this.closeCustomDialog, this);\n this.parent.on(events.setCustomFilterHeader, this.setCustomFilterHeader, this);\n this.parent.on(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn, this);\n this.parent.on(events.renderResponsiveCmenu, this.renderResponsiveContextMenu, this);\n this.parent.on(events.filterCmenuSelect, this.renderCustomFilterDiv, this);\n this.parent.on(events.customFilterClose, this.customExFilterClose, this);\n this.parent.on(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n if (this.action === ResponsiveDialogAction.isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[i].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[i].field);\n cDiv.setAttribute('data-e-mappinguid', cols[i].uid);\n var span = gObj.createElement('span', { innerHTML: cols[i].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (this.action === ResponsiveDialogAction.isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[i].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[i].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n button.innerHTML = index > -1 ? this.parent.sortSettings.columns[index].direction : 'None';\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (this.action === ResponsiveDialogAction.isFilter && filteredCols.indexOf(cols[i].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[i].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[i][name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var direction = txt === 'None' ? 'Ascending' : txt === 'Ascending' ? 'Descending' : 'None';\n target.innerHTML = direction;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.querySelectorAll('.e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[i] !== target) {\n buttons[i].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[i]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n * @return {void}\n * @hidden\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter', className: 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n this.customFilterDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n });\n var isStringTemplate = 'isStringTemplate';\n options[isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader();\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id, className: 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[i].field);\n var sortField = this.parent.sortSettings.columns[i].field;\n var sortDirection = this.parent.sortSettings.columns[i].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[i].field, this.sortPredicate[i].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /** @hidden */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: 'e-primary e-flat e-res-apply-btn',\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: 'e-primary e-flat e-res-' + id_1 + '-clear-btn',\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[i].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setCustomFilterHeader = function (args) {\n if (this.parent.rowRenderingMode !== 'Vertical') {\n return;\n }\n var header = this.customResponsiveDlg.element.querySelector('.e-reslabel');\n if (header && header.firstElementChild) {\n header.firstElementChild.innerHTML = args.title;\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n this.parent.off(events.filterDialogClose, this.closeCustomDialog);\n this.parent.off(events.setCustomFilterHeader, this.setCustomFilterHeader);\n this.parent.off(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn);\n this.parent.off(events.renderResponsiveCmenu, this.renderResponsiveContextMenu);\n this.parent.off(events.filterCmenuSelect, this.renderCustomFilterDiv);\n this.parent.off(events.customFilterClose, this.customExFilterClose);\n this.parent.off(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[name])) {\n this.services[name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[name])) {\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n this.rendererMap[rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n * @hidden\n */\n function ShowHide(parent) {\n this.parent = parent;\n }\n /**\n * Shows a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key, index) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item, index) {\n if (item[getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n /**\n * Shows or hides columns by given column collection.\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @return {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns :\n isBlazor() ? (JSON.parse(JSON.stringify(columns))) : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n * @hidden\n */\n function Clipboard(parent) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.e-rowcell');\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[r].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[r] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[rIdx];\n var mTr = mRows[rIdx];\n isAvail = !fTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[rIdx];\n isAvail = frTr.querySelector('[aria-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[c]) : cols[c];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': 'clipboard' }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.parent.getVisibleColumns()[i].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[selectedIndexes[i]].\n querySelectorAll('.e-rowcell:not(.e-hide)'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[i]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[i]].\n querySelectorAll('.e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false,\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n this.copyContent += this.parent.getColumns()[parseInt(cells[j].getAttribute('aria-colindex'), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[j].classList.contains('e-hide')) {\n if (isBlazor()) {\n if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-check')).length) {\n this.copyContent += true;\n }\n else if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-uncheck')).length) {\n this.copyContent += false;\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n }\n else {\n this.copyContent += cells[j];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n * @return {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var isBox = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[i].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[i].rowIndex);\n }\n if (rowCellIndxes[i].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[i].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[i].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","import { Observer, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { AriaService } from '../services/aria-service';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\nimport { DataUtil } from '@syncfusion/ej2-data';\nexport var gridObserver = new Observer();\n/**\n * BlazorAction is used for performing Blazor related Grid Actions.\n * @hidden\n */\nvar BlazorAction = /** @class */ (function () {\n function BlazorAction(parent) {\n this.aria = new AriaService();\n this.actionArgs = {};\n this.virtualHeight = 0;\n this.parent = parent;\n this.addEventListener();\n }\n BlazorAction.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('detailclick', this.onDetailRowClick, this);\n this.parent.on('add-delete-success', this.addDeleteSuccess, this);\n this.parent.on('editsuccess', this.editSuccess, this);\n this.parent.on('setvisibility', this.setColumnVisibility, this);\n this.parent.on('offset', this.setServerOffSet, this);\n this.parent.on('updateaction', this.modelChanged, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on('group-expand-collapse', this.onGroupClick, this);\n this.parent.on('setcolumnstyles', this.setColVTableWidthAndTranslate, this);\n this.parent.on('refresh-virtual-indices', this.invokeServerDataBind, this);\n this.parent.on('contentcolgroup', this.contentColGroup, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n };\n BlazorAction.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('detailclick', this.onDetailRowClick);\n this.parent.off('add-delete-success', this.addDeleteSuccess);\n this.parent.off('editsuccess', this.editSuccess);\n this.parent.off('setvisibility', this.setColumnVisibility);\n this.parent.off('offset', this.setServerOffSet);\n this.parent.off('updateaction', this.modelChanged);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off('group-expand-collapse', this.onGroupClick);\n this.parent.off('setcolumnstyles', this.setColVTableWidthAndTranslate);\n this.parent.off('refresh-virtual-indices', this.invokeServerDataBind);\n this.parent.off('contentcolgroup', this.contentColGroup);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n };\n BlazorAction.prototype.getModuleName = function () { return 'blazor'; };\n ;\n BlazorAction.prototype.modelChanged = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n };\n BlazorAction.prototype.addDeleteSuccess = function (args) {\n var _this = this;\n var editArgs;\n var action = 'action';\n var data = 'data';\n var index = 'index';\n editArgs = {\n requestType: args.requestType,\n data: args[data],\n action: args[action]\n };\n if (!isNullOrUndefined(args[index])) {\n editArgs[index] = args[index];\n }\n args.promise.then(function (e) { return _this.editSuccess(editArgs); }).catch(function (e) {\n if (isBlazor() && _this.parent.isServerRendered) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n _this.parent.trigger(events.actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : e));\n _this.parent.hideSpinner();\n _this.parent.log('actionfailure', { error: e });\n });\n };\n BlazorAction.prototype.editSuccess = function (args) {\n this.parent.renderModule.resetTemplates();\n this.invokeServerDataBind(args);\n };\n BlazorAction.prototype.invokeServerDataBind = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n this.parent.allowServerDataBinding = true;\n this.parent.serverDataBind();\n this.parent.allowServerDataBinding = false;\n };\n BlazorAction.prototype.onDetailRowClick = function (target) {\n var gObj = this.parent;\n var adaptor = 'interopAdaptor';\n var rIndex = 'rowIndex';\n var invokeMethodAsync = 'invokeMethodAsync';\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var args = {\n uid: uid, classList: target.classList[0], index: tr.getAttribute('aria-rowindex'),\n rowIndex: gObj.getRowsObject().indexOf(rowObj), colSpan: this.parent.getVisibleColumns().length\n };\n gObj[adaptor][invokeMethodAsync]('OnDetailClick', args);\n if (target.classList.contains('e-detailrowcollapse')) {\n var rows = gObj.getRowsObject();\n var rowData = rowObj.data;\n var gridRowId = this.parent.getRowUid('grid-row');\n var len = gObj.groupSettings.columns.length;\n var gridRow = new Row({\n isDataRow: true,\n isExpand: true,\n uid: gridRowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (var i = 0; i < len; i++) {\n gridRow.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n rows.splice(args[rIndex] + 1, 0, gridRow);\n gObj.trigger(events.detailDataBound, { data: rowData });\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = true;\n this.aria.setExpand(target, true);\n }\n else {\n gObj.getRowsObject().splice(args[rIndex] + 1, 1);\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n };\n BlazorAction.prototype.setColumnVisibility = function (columns) {\n var visible = {};\n var adaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n for (var i = 0; i < columns.length; i++) {\n visible[columns[i].uid] = columns[i].visible;\n }\n this.parent[adaptor][invokeMethodAsync]('setColumnVisibility', { visible: visible });\n };\n BlazorAction.prototype.dataSuccess = function (args) {\n if (this.parent.enableVirtualization && Object.keys(this.actionArgs).length === 0) {\n this.actionArgs.requestType = 'virtualscroll';\n }\n var startIndex = 'startIndex';\n var endIndex = 'endIndex';\n this.actionArgs[startIndex] = args[startIndex];\n this.actionArgs[endIndex] = args[endIndex];\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n if (this.virtualContentModule.activeKey === 'downArrow' || this.virtualContentModule.activeKey === 'upArrow') {\n var row = this.parent.getRowByIndex(this.virtualContentModule.blzRowIndex);\n if (row) {\n this.parent.selectRow(parseInt(row.getAttribute('aria-rowindex'), 10));\n // tslint:disable-next-line:no-any\n row.cells[0].focus({ preventScroll: true });\n }\n }\n this.virtualContentModule.blazorDataLoad = false;\n }\n if (args.foreignColumnsData) {\n var columns = this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (args.foreignColumnsData[columns[i].field]) {\n columns[i].columnData = args.foreignColumnsData[columns[i].field];\n }\n }\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n var agg = [];\n var aggRows = this.parent.aggregates;\n for (var i = 0; i < aggRows.length; i++) {\n var aggRow = aggRows[i];\n for (var j = 0; j < aggRow.columns.length; j++) {\n var aggr = {};\n var type = aggRow.columns[j].type.toString();\n aggr = { type: type.toLowerCase(), field: aggRow.columns[j].field };\n agg.push(aggr);\n }\n }\n var data = void 0;\n var aggrds = void 0;\n var groupedCols = this.parent.groupSettings.columns;\n for (var k = 0; k < groupedCols.length; k++) {\n aggrds = data ? data : args.result;\n data = DataUtil.group(aggrds, groupedCols[k], agg, null, null);\n }\n args.result = data ? data : args.result;\n }\n var rowUid = 'rowUid';\n var offsetTime = 'offsetTime';\n var off = 'offset';\n this.parent[rowUid] = args[rowUid];\n args[off] = Math.sign(args[off]) === 1 ? -Math.abs(args[off]) : Math.abs(args[off]);\n this.parent[offsetTime] = args[off];\n if (this.parent[offsetTime] !== new Date().getTimezoneOffset() / 60) {\n if (this.parent.editSettings.mode !== 'Batch') {\n var action = 'action';\n var rowIndex = 'rowIndex';\n var index = 'index';\n if (this.actionArgs[action] === 'edit') {\n this.setClientOffSet(args, this.actionArgs[rowIndex]);\n }\n else if (this.actionArgs[action] === 'add') {\n this.setClientOffSet(args, this.actionArgs[index]);\n }\n }\n else if (this.parent.editSettings.mode === 'Batch') {\n var changes = 'changes';\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var batchChanges = this.actionArgs[changes] || { changedRecords: [], addedRecords: [] };\n for (var i = 0; i < batchChanges[changedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[changedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[addedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n }\n }\n this.parent.renderModule.dataManagerSuccess(args, this.actionArgs);\n this.parent.getMediaColumns();\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n this.setColVTableWidthAndTranslate();\n if (this.parent.groupSettings.columns.length) {\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n }\n }\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.removeDisplayNone = function () {\n var renderedContentRows = this.parent.getContentTable().querySelectorAll('tr');\n for (var i = 0; i < renderedContentRows.length; i++) {\n var renderedContentCells = renderedContentRows[i].querySelectorAll('td');\n for (var j = 0; j < renderedContentCells.length; j++) {\n renderedContentCells[j].style.display = '';\n }\n }\n };\n BlazorAction.prototype.setVirtualTrackHeight = function (args) {\n this.virtualHeight = args.VisibleGroupedRowsCount * this.parent.getRowHeight();\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n };\n BlazorAction.prototype.setColVTableWidthAndTranslate = function (args) {\n if (this.parent.enableColumnVirtualization && this.virtualContentModule.prevInfo &&\n (JSON.stringify(this.virtualContentModule.currentInfo.columnIndexes) !==\n JSON.stringify(this.virtualContentModule.prevInfo.columnIndexes)) || ((args && args.refresh))) {\n var translateX = this.virtualContentModule.getColumnOffset(this.virtualContentModule.startColIndex - 1);\n var width = this.virtualContentModule.getColumnOffset(this.virtualContentModule.endColIndex - 1) - translateX + '';\n this.virtualContentModule.header.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.header.virtualEle.adjustTable(translateX, 0);\n this.parent.getContentTable().parentElement.style.width = width + 'px';\n }\n if (this.dataSourceChanged) {\n this.virtualContentModule.getPanel().firstElementChild.scrollTop = 0;\n this.virtualContentModule.getPanel().firstElementChild.scrollLeft = 0;\n if (this.virtualContentModule.header.virtualEle) {\n this.virtualContentModule.header.virtualEle.adjustTable(0, 0);\n }\n this.parent.getContentTable().parentElement.style.transform = 'translate(0px,0px)';\n this.virtualContentModule.refreshOffsets();\n this.virtualContentModule.refreshVirtualElement();\n this.dataSourceChanged = false;\n }\n };\n BlazorAction.prototype.dataSourceModified = function () {\n this.dataSourceChanged = true;\n };\n BlazorAction.prototype.setClientOffSet = function (args, index) {\n var timeZone = DataUtil.serverTimezoneOffset;\n DataUtil.serverTimezoneOffset = 0;\n args.result[index] = DataUtil.parse.parseJson(JSON.stringify(args.result[index]));\n DataUtil.serverTimezoneOffset = timeZone;\n };\n BlazorAction.prototype.setServerOffSet = function (args) {\n var serverTimeZone = DataUtil.serverTimezoneOffset;\n var offsetTime = 'offsetTime';\n var data = 'data';\n var timeZone = new Date().getTimezoneOffset() / 60 * 2 + this.parent[offsetTime];\n DataUtil.serverTimezoneOffset = timeZone;\n args[data] = DataUtil.parse.parseJson(JSON.stringify(args[data]));\n DataUtil.serverTimezoneOffset = serverTimeZone;\n };\n BlazorAction.prototype.onGroupClick = function (args) {\n var _this = this;\n var adaptor = 'interopAdaptor';\n var content = 'contentModule';\n var invokeMethodAsync = 'invokeMethodAsync';\n var exactTopIndex = 'exactTopIndex';\n args[exactTopIndex] = Math.round((this.parent.element.querySelector('.e-content').scrollTop) / this.parent.getRowHeight());\n var rowHeight = 'rowHeight';\n args[rowHeight] = this.parent.getRowHeight();\n this.parent[adaptor][invokeMethodAsync]('OnGroupExpandClick', args).then(function () {\n _this.parent[content].rowElements = [].slice.call(_this.parent.getContentTable().querySelectorAll('tr.e-row[data-uid]'));\n });\n };\n BlazorAction.prototype.setPersistData = function (args) {\n var gObj = this.parent;\n gObj.mergePersistGridData(args);\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n gObj.notify('persist-data-changed', {});\n gObj.notify(events.columnVisibilityChanged, gObj.getColumns());\n };\n ;\n BlazorAction.prototype.resetPersistData = function (args) {\n var gObj = this.parent;\n var bulkChanges = 'bulkChanges';\n var parseArgs = JSON.parse(args);\n var persistArgs = { filterSettings: parseArgs.filterSettings,\n groupSettings: parseArgs.groupSettings, pageSettings: parseArgs.pageSettings, sortSettings: parseArgs.sortSettings,\n searchSettings: parseArgs.searchSettings, columns: parseArgs.columns };\n if (!persistArgs.sortSettings.columns) {\n persistArgs.sortSettings.columns = [];\n }\n if (!persistArgs.groupSettings.columns) {\n persistArgs.groupSettings.columns = [];\n }\n if (!persistArgs.pageSettings.currentPage) {\n gObj.pageSettings.currentPage = 1;\n }\n for (var i = 0; i < gObj.columns.length; i++) {\n if (gObj.groupSettings.columns.indexOf(gObj.columns[i].field) > -1) {\n gObj.columns[i].visible = true;\n }\n }\n gObj.mergePersistGridData(persistArgs);\n gObj.notify('persist-data-changed', {});\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n for (var i = 0; i < gObj.columns.length; i++) {\n gObj.columns[i].editType = gObj.columns[i].editType.toLowerCase();\n }\n gObj.setProperties({ filterSettings: { columns: [] } }, true);\n };\n BlazorAction.prototype.contentColGroup = function () {\n var gObj = this.parent;\n var contentTable = gObj.getContent().querySelector('.e-table');\n contentTable.insertBefore(contentTable.querySelector(\"#content-\" + gObj.element.id + \"colGroup\"), contentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var headerTable = gObj.getHeaderContent().querySelector('.e-table');\n headerTable.insertBefore(headerTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), headerTable.querySelector('tbody'));\n }\n if (gObj.getFrozenColumns() !== 0) {\n var movableContentTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('.e-table');\n movableContentTable.insertBefore(movableContentTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableContentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var movableHeaderTable = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('.e-table');\n movableHeaderTable.insertBefore(movableHeaderTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableHeaderTable.querySelector('tbody'));\n }\n }\n };\n BlazorAction.prototype.dataFailure = function (args) {\n this.parent.renderModule.dataManagerFailure(args, this.actionArgs);\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n return BlazorAction;\n}());\nexport { BlazorAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getValue, isBlazor, blazorTemplates } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, updateBlazorTemplate, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { gridObserver } from '../actions/blazor-action';\nimport { RowModelGenerator } from '../services/row-model-generator';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n * @return {string}\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource', 'headerText'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[i]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[val];\n }\n }\n this.pageSettings.template = undefined;\n /* tslint:disable-next-line:no-any */\n if (this.isAngular) {\n /* tslint:disable:no-string-literal */\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n * @return {ModuleDeclaration[]}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n if (isBlazor()) {\n modules.push({ member: 'blazor', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n /* tslint:disable */\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n if (isBlazor() && this.enableVirtualization && this.allowGrouping) {\n var isExpanded = 'isExpanded';\n this[isExpanded] = false;\n }\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No Matches Found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No Matches Found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n /* tslint:enable */\n };\n /**\n * For internal use only - To Initialize the component rendering.\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n if (isBlazor()) {\n this.renderComplete();\n }\n createSpinner({ target: this.element }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n this.trigger(events.load);\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.getMediaColumns();\n setColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n this.showSpinner();\n this.notify(events.initialEnd, {});\n if (isBlazor() && this.isServerRendered) {\n gridObserver.notify(events.componentRendered, { id: this.element.id, grid: this });\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n */\n Grid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually showed spinner needs to hide by `hideSpinnner`.\n */\n Grid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().querySelectorAll('.e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n };\n /**\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[columnIndex];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.e-gridfooter');\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n * @method destroy\n * @return {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-gridcontent') ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'none';\n }\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n if (this.isAngular && !this.isFreezeRefresh) {\n this.element = null;\n }\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.freezeRefresh();\n }\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n /* tslint:disable */\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().querySelectorAll('.e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[count].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (col.freeze === 'Left') {\n col.freezeTable = 'frozen-left';\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = 'frozen-right';\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = 'frozen-left';\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = 'frozen-left';\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[i];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Gets the header div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n * @param {Element} element - Specifies the Grid header.\n * @return {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n * @return {Element}\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n * @param {Element} element - Specifies the Grid content table.\n * @return {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n * @param {Element} element - Specifies the Grid content.\n * @return {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n * @param {Element} element - Specifies the Grid header table.\n * @return {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n * @return {Element}\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n * @param {Element} element - Specifies the Grid pager.\n * @return {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a movable tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[index];\n };\n /**\n * Gets all the data rows of the Grid.\n * @return {Element[]}\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n * @param {Element}\n * @return RowInfo\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.e-rowcell');\n if (!cell) {\n var row = closest(ele, '.e-row');\n if (!isNullOrUndefined(row)) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute('aria-colindex'), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.e-row');\n var rowIndex = parseInt(row_1.getAttribute('aria-rowindex'), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[cellIndex].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === 'frozen-left') {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === 'frozen-right') {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[index].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n * @return {Element[]}\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector('tbody'))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody() : this.getContentTable().querySelector('tbody');\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody')\n : this.getHeaderTable().querySelector('tbody');\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains('e-row') && (!rows[i].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute(\"aria-rowindex\"))] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-movablecontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.e-frozencontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var fieldIdx;\n var col;\n var tr;\n var mTr;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var selectedRow = {};\n var movableSelectedRow = {};\n var rowObjects = this.contentModule.getRows();\n var movableRowObjects = this.contentModule.getMovableRows();\n fieldIdx = this.getColumnIndexByField(field);\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n col = this.getColumnByField(field);\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n movableSelectedRow = movableRowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n tr = !isNullOrUndefined(selectedRow) ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n mTr = !isNullOrUndefined(movableSelectedRow) ? this.element.querySelector('[data-uid=' + movableSelectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n var td = !isNullOrUndefined(tr[cells][fieldIdx]) ?\n tr[cells][fieldIdx] : mTr[cells][fieldIdx - this.frozenColumns];\n if (!isNullOrUndefined(td)) {\n var sRow = selectedRow[cells][fieldIdx];\n var mRow = void 0;\n if (this.frozenColumns) {\n mRow = movableSelectedRow[cells][fieldIdx - this.frozenColumns];\n }\n cell.refreshTD(td, !isNullOrUndefined(sRow) ? sRow : mRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(movableSelectedRow) && !isNullOrUndefined(movableSelectedRow['changes'])) {\n movableSelectedRow['changes'][field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n //tslint:disable-next-line:no-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.getRowsObject();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rwdata = 'data';\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var selectedRow;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * Gets a cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[rowIndex] && rows[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().querySelectorAll('.e-headercell')[index];\n };\n /**\n * Gets a movable column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().querySelectorAll('.e-headercell')[index];\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n return null;\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n * @param {string} field - Specifies the column name.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n * @param {string} field - Specifies the column uid.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n * @param {string} field - Specifies the column name.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n * @param {string} field - Specifies the column name.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item, index) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n * @param {string} field - Specifies the column name.\n * @return {string}\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets TH index by column uid value.\n * @private\n * @param {string} uid - Specifies the column uid.\n * @return {number}\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n * @private\n * @return {number}\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n * @return {string[]}\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n * @return {Function}\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n * @return {string[]}\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n * @return {Element[]}\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n * @return {number[]}\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n * @return {number[]}\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n * @return {string[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[i].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n * @return {Data}\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.splitFrozenCount(columns[i].columns);\n }\n else {\n if (columns[i].freeze === 'Right') {\n if (columns[i].visible !== false) {\n this.visibleFrozenRight++;\n }\n ;\n this.frozenRightColumns.push(columns[i]);\n this.frozenRightCount++;\n }\n else if (columns[i].freeze === 'Left') {\n if (columns[i].visible !== false) {\n this.visibleFrozenLeft++;\n }\n ;\n this.frozenLeftColumns.push(columns[i]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[i].visible !== false) {\n this.visibleMovable++;\n }\n ;\n this.movableColumns.push(columns[i]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n * @return {Object}\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[i].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].visible && (columns[i].freeze === 'Left' || columns[i].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt, index);\n }\n else {\n if (cols[i].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @return {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Filters grid row by column name with the given options.\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @return {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n * @return {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @return {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n * @return {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n * @return {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n * @return {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n * @return {Object}\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector('colgroup').childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector('colgroup').childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @return {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @return {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e, args) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[i].firstElementChild;\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[j];\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * @param {string |string[]} fieldNames - Defines the column names.\n * @return {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[i]; })[0] : this_1.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: 'e-content', attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n * @return {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n * @return {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n };\n /** @hidden */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var width;\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerDivTag = 'e-gridheader';\n var contentDivTag = 'e-gridcontent';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var td = element;\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /** @hidden */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, 'e-row');\n if ([].slice.call(this.element.querySelectorAll('.e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.querySelectorAll('.e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute('aria-rowindex') + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') != 'true' && rows[i]) {\n rows[i].classList.add('e-frozenhover');\n }\n else if (rows[i]) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n * @hidden\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n /* tslint:disable-next-line:no-any */\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n * @hidden\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n /* tslint:disable-next-line:no-any */\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n this.on(events.contentReady, this.blazorTemplate, this);\n };\n /**\n * @hidden\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n Grid.prototype.blazorTemplate = function () {\n if (isBlazor()) {\n if (this.pageSettings.template) {\n updateBlazorTemplate(this.element.id + \"_template\", 'Template', this.pageSettings);\n }\n for (var i = 0; i < this.columnModel.length; i++) {\n if (this.columnModel[i].template) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid, 'Template', this.columnModel[i], false);\n }\n if (this.columnModel[i].headerTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'headerTemplate', 'HeaderTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type == 'FilterBar' && this.columnModel[i].filterTemplate) {\n var fieldName = this.columnModel[i].field;\n var tempID = this.element.id + this.columnModel[i].uid + 'filterTemplate';\n var filteredColumns = this.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName == filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type != 'FilterBar' && this.columnModel[i].filterTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i]);\n }\n }\n if (this.groupSettings.captionTemplate) {\n updateBlazorTemplate(this.element.id + 'captionTemplate', 'CaptionTemplate', this.groupSettings);\n }\n var guid = 'guid';\n for (var k = 0; k < this.aggregates.length; k++) {\n for (var j = 0; j < this.aggregates[k].columns.length; j++) {\n if (this.aggregates[k].columns[j].footerTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'footerTemplate', 'FooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupFooterTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupFooterTemplate', 'GroupFooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupCaptionTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupCaptionTemplate', 'GroupCaptionTemplate', this.aggregates[k].columns[j]);\n }\n }\n }\n }\n };\n /**\n * Get current visible data of grid.\n * @return {Object[]}\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n ;\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length && this.currentViewData.records) ?\n this.currentViewData.records : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.querySelectorAll('.e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, 'e-gridcontent') ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell'))) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isBlazor()) {\n var clonedColumn = extend({}, args.column);\n args = { rowData: args.rowData, rowIndex: args.rowIndex,\n cellIndex: args.cellIndex, column: clonedColumn };\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, 'e-row');\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains('e-editedrow') || tr.classList.contains('e-addedrow'));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, 'e-rowcell') &&\n parentsUntil(e.target, 'e-rowcell').classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch') {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if (gridElement && gridElement.id !== this.element.id) {\n return true;\n }\n return false;\n };\n /**\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n if (Array.isArray(this[key]) && key === 'columns') {\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this[key]);\n }\n this.mergeColumns(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n else {\n extend(this[key], dataObj[key]);\n }\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[i].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n if (isBlazor()) {\n var guid = 'guid';\n storedColumns[i][guid] = localCol[guid];\n storedColumns[i].uid = localCol.uid;\n }\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false, });\n this.trigger(\"keyPressed\", presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this.columns);\n }\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.e-table');\n remove(mTbl.querySelector('colgroup'));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector('tbody'));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.e-table');\n remove(frTbl.querySelector('colgroup'));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector('colgroup')).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector('tbody'));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n /* tslint:disable-next-line:no-any */\n workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n * @param {pdfExportProperties} PdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, pdfDoc, isBlob) {\n if (isBlazor()) {\n this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n return null;\n }\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n * @return {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n * @return {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.e-content');\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n * @param {string} value - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n for (var i = 0; i < this.getRowsObject().length; i++) {\n var pKvalue = this.getRowsObject()[i].data[pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, this.getRowsObject()[i].data);\n }\n if (pKvalue === value) {\n return this.getRowsObject()[i].index;\n }\n }\n return -1;\n };\n ;\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[i].uid) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n * @return {Object[] | Promise}\n\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.e-movablecontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.e-frozencontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-movableheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozenheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector('tbody').children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector('tbody').children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector('tbody').children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector('tbody').children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector('tbody').children)).concat(frozenRigtRows);\n }\n ;\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector('tbody').children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector('tbody').children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * calculatePageSizeByParentHeight\n\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode == 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') != -1) {\n containerHeight = parseInt(containerHeight) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector(\".e-columnheader\").clientHeight)) {\n height += this.element.querySelector(\".e-columnheader\").clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.querySelectorAll('.e-summaryrow').length; i++) {\n height += this.element.querySelectorAll('.e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *@param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n *@param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel data in server side.\n * @param {string} url - Pass Url for server side excel export action.\n * @return {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf data in server side.\n * @param {string} url - Pass Url for server side pdf export action.\n * @return {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n var _this = this;\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = state.data;\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n gridModel.filterSettings.columns = JSON.parse(queries).where;\n gridModel.columns.forEach(function (e) {\n var column = grid.getColumnByUid(e.uid);\n if (column) {\n e.headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n e.template = \"true\";\n }\n ;\n if (e.format) {\n e.format = getNumberFormat(_this.getFormat(e.format), e.type, _this.isExcel);\n }\n }\n if (e.columns) {\n _this.setHeaderText(e.columns);\n }\n });\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: \"gridModel\" } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = \"POST\";\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[i].uid);\n columns[i].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[i].template = \"true\";\n }\n ;\n if (columns[i].format) {\n columns[i].format = getNumberFormat(this.getFormat(columns[i].format), columns[i].type, this.isExcel);\n }\n if (columns[i].columns) {\n this.setHeaderText(columns[i].columns);\n }\n }\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData,\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.renderTemplates = function () {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[portals]);\n this.renderReactTemplates();\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = ['addedRecords', 'changedRecords', 'deletedRecords'];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[i]]) {\n compareChanges(this, changes, loopstring[i], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function (e) {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute('aria-rowindex'), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[index];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[keyField] === rowObj[i].data[keyField]; }).length) {\n this_3.deleteRowElement(rowObj[i]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[keyField] === result[i][keyField]) {\n if (e !== result[i]) {\n _this.setRowData(result[i][keyField], result[i]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[i], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().querySelectorAll('.e-row'));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector('tbody');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n }\n else {\n mTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector('tbody');\n }\n else {\n tbody = this.getContent().querySelector('tbody');\n }\n tbody = this.getContent().querySelector('tbody');\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') != -1) {\n height = parseInt(height) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /** @hidden */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector('tbody');\n }\n return tbody;\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomFilter = function () {\n if (this.filterModule) {\n this.filterModule.showCustomFilter();\n }\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomSort = function () {\n if (this.sortModule) {\n this.sortModule.showCustomFilter();\n }\n };\n var Grid_1;\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('18.4.49')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","import { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend, isBlazor, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\n/**\n * CellRenderer class which responsible for building cell content.\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: 'e-rowcell', attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n * @returns string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var literals = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n var index = 'index';\n if (isBlazor() && isEdit) {\n var rNumber = this.parent.editSettings.mode !== 'Batch' ? parseInt(attributes[index], 10) : null;\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str], rNumber);\n window[templateID] = null;\n if (this.parent.editSettings.mode !== 'Batch') {\n updateBlazorTemplate(templateID, 'Template', cell.column, false);\n }\n }\n else {\n if (isReactCompiler) {\n var copied = { 'index': attributes[literals[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[str], null, node);\n this.parent.renderTemplates();\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + ' is template cell' + ' column header ' +\n cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n td.innerHTML = '';\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n parentRow.cells.length !== cellIndex - 1 ? parentRow.insertBefore(newTD, parentRow.cells[cellIndex])\n : parentRow.appendChild(newTD);\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // tslint:disable-next-line:no-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // tslint:disable-next-line:no-any\n var attrs = source.attributes;\n // tslint:disable-next-line:no-any\n var i = attrs.length;\n // tslint:disable-next-line:no-any\n var attr;\n while (i--) {\n attr = attrs[i];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + ' column header ' + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add('e-gridchkbox');\n node.setAttribute('aria-label', 'checkbox');\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n checkWrap.classList.add('e-checkbox-disabled');\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + ' column header ' + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[property] = innerHtml;\n return node;\n };\n /**\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': 'aria-colindex' };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { role: 'link', tabindex: '-1', 'aria-label': 'Goto Page ' + i,\n href: 'javascript:void(0);', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n var target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var pageNo;\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[i].style.display = '';\n this.links[i].setAttribute('index', pageNo.toString());\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[i].classList.add('e-pager-default');\n }\n else {\n this.links[i].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[i].style.display = 'none';\n }\n classList(this.links[i], [], ['e-currentitem', 'e-active']);\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n };\n NumericContainer.prototype.updateStyles = function () {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append, isBlazor } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': 'Pager Information' } });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n if (isBlazor()) {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('CurrentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('TotalItemsInfo'), [pagerObj.totalRecordsCount || 0]);\n }\n else {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n }\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren } from '../grid/base/util';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n * @hidden\n */\n function Pager(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager',\n previousPagerTooltip: 'Go to previous pager',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager',\n PreviousPagerTooltip: 'Go to previous pager',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n */\n Pager.prototype.render = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on('pager-refresh', this.pagerTemplate, this);\n this.notify('pager-refresh', {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.initLocalization();\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n * @method destroy\n * @return {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isReactTemplate()) {\n this.off('pager-refresh', this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n * @param {number} pageNo - Defines page number.\n * @return {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.refresh();\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate()) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = isBlazor() ? this.getPagerTemplate()(data, this, 'template', tempId, this.isStringTemplate) :\n this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /** @hidden */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /** @hidden */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Pager.prototype.compile = function (template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n * @return {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify('pager-refresh', {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.containerModule.refresh();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('FirstPageTooltip') : this.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('PreviousPageTooltip') :\n this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('NextPageTooltip') :\n this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('LastPageTooltip') :\n this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[i]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return this.isReact && this.template && typeof (this.template) !== 'string';\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]] } items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, isBlazor) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () { queryString = ''; }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n i === -1 ? index = 0 : index = i;\n item = listItems[index];\n if (isBlazor) {\n text = ignoreCase ? item.textContent.trim().toLowerCase() : item.textContent.trim();\n }\n else {\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n }\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\nexport function Search(inputVal, items, searchType, ignoreCase) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var item = itemsData[i];\n var text = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr)) {\n itemData.item = item;\n itemData.index = i;\n return { item: item, index: i };\n }\n }\n return itemData;\n }\n return itemData;\n}\n","import { extend, merge, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\nexport var ListBase;\n(function (ListBase) {\n /**\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n * @param {{[key:string]:Object}[]|string[]} dataSource - Specifies an array of JSON or String data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // tslint:disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n // tslint:disable-next-line\n return createListFromJson(createElement, dataSource, options, \n // tslint:disable-next-line\n ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n * @param {string[]} dataSource - Specifies an array of string data\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n * @param {string[]} dataSource - Specifies an array of string data\n */\n function createListItemFromArray(createElement, dataSource, \n // tslint:disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n * @param {{[key:string]:Object}[]} dataSource - Specifies an array of JSON data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n // tslint:disable-next-line:max-func-body-length\n // tslint:disable-next-line\n function createListItemFromJson(createElement, dataSource, \n // tslint:disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = void 0;\n iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n * @param {{[key:string]:Object}[]} dataSource - Specifies an array of JSON data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // tslint:disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]|NodeList} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n * @param {{[key:string]:Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder='None'} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query=new Query()} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // tslint:disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n * @param {string} template - that need to convert and generate li element.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // tslint:disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compile(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n * @param {string} template - that need to convert and generate li element.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // tslint:disable-next-line\n headerItems, options, componentInstance) {\n var compiledString = compile(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable',\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // tslint:disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n !isNullOrUndefined(uID) ? li.setAttribute('data-uid', uID) : li.setAttribute('data-uid', generateId());\n var blazId = 'BlazId';\n if (options && !!options.removeBlazorID\n && typeof item === 'object'\n && item.hasOwnProperty(blazId)) {\n delete item[blazId];\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compile(options.groupTemplate);\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n else if (!grpLI && options && options.template) {\n var compiledString = compile(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n * @param {string} className? - Specifies class name that need to be added in UL element.\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n * @param {liElement} liElement - Specifies LI element.\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n * @param {{[key:string]:Object}|string[]|string} dataSource - Specifies an JSON or String data.\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, remove, select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n return _this;\n }\n ;\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n ;\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === value.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true);\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // tslint:disable-next-line\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, !actionFailure, actionFailure, false, false, false, false);\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n }\n else {\n ele.innerHTML = content;\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n ;\n DropDownBase.prototype.getTextByValue = function (value) {\n var text;\n text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = this.typeOfData(this.listData);\n if (isBlazor() && isNullOrUndefined(value) || value === 'null') {\n return null;\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return (value === 'true');\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n this.enableRtl ? addClass(this.enableRtlElements, dropDownBaseClasses.rtl) :\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n };\n ;\n /**\n * Initialize the Component.\n */\n DropDownBase.prototype.initialize = function () {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n };\n ;\n DropDownBase.prototype.DropDownBaseupdateBlazorTemplates = function (item, group, noRecord, action, value, header, footer, isEmpty) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n updateBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.groupTemplate && group) {\n updateBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.noRecordsTemplate && noRecord) {\n updateBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.actionFailureTemplate && action) {\n updateBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (value) {\n updateBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (header) {\n updateBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY, this);\n }\n if (footer) {\n updateBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY, this);\n }\n }\n };\n DropDownBase.prototype.DropDownBaseresetBlazorTemplates = function (item, group, noRecord, action, value, header, footer) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n resetBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY);\n }\n if (this.groupTemplate && group) {\n resetBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY);\n }\n if (this.noRecordsTemplate && noRecord) {\n resetBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY);\n }\n if (this.actionFailureTemplate && action) {\n resetBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY);\n }\n if (value) {\n resetBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY);\n }\n if (header) {\n resetBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY);\n }\n if (footer) {\n resetBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY);\n }\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n DropDownBase.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n var items = element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n * @private\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.list], dropDownBaseClasses.noData);\n };\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n this.listData = list;\n if (isBlazor() && this.isServerRendered && this.getModuleName() === 'listbox') {\n remove(this.list.querySelector('.e-list-parent'));\n remove(this.list.querySelector('.e-hidden-select'));\n }\n else {\n // tslint:disable-next-line \n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.list.innerHTML = '';\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n };\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n }\n else {\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n }\n this.DropDownBaseupdateBlazorTemplates(false, true, false, false, false, false, false, false);\n }\n };\n /**\n * To create the ul li list items\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n ;\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n ;\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n prepend([this.fixedHeaderElement], this.list);\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = e.target;\n var liHeight = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = e.target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n /**\n * To render the list items\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n var isTempEmpty = (this.getModuleName() === 'listbox') ? true : false;\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, isTempEmpty);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n ;\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n ;\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n this.list.parentElement.style.display = 'block';\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n }\n var liWidth = this.liCollections[0].offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n ;\n /**\n * To dispatch the event manually\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n this.setListData(dataSource, fields, query);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n * @private\n */\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\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 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n ;\n /**\n * Build and render the component\n * @private\n */\n DropDownBase.prototype.render = function (isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n this.setEnabled();\n if (!isEmptyData) {\n this.initialize();\n }\n };\n ;\n /**\n * Return the module name of this component.\n * @private\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n ;\n /**\n * Adds a new item to the 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 */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var compiledString = compile(this.itemTemplate);\n // tslint:disable-next-line\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.list.appendChild(this.ulElement);\n this.liCollections = liCollections;\n append(liCollections, this.ulElement);\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n _super.prototype.destroy.call(this);\n };\n ;\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\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 { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\n/* tslint:disable */\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames \nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n ;\n /**\n * Initialize the event handler.\n * @private\n */\n DropDownList.prototype.preRender = function () {\n var checkBlazor = isBlazor() && this.isServerRendered;\n this.isServerBlazor = (checkBlazor) ? true : false;\n if (this.isServerBlazor) {\n this.initializeData();\n }\n else {\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n }\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (isEmptyData) {\n if (!this.isServerBlazor) {\n _super.prototype.render.call(this, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n this.inputElement.value = '';\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = 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 if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n htmlAttr === 'placeholder' ? Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputElement) :\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ;\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n ;\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return this.inputWrapper.container;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n ;\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlur = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlur, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlur);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n */\n DropDownList.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n ;\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n if (!this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.isServerIncrementalSearch = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var classList = target.classList;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n ;\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n ;\n DropDownList.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n ;\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = (this.isServerBlazor && this.popupObj && this.popupObj.element) ?\n this.popupObj.element.querySelectorAll('.' + dropDownBaseClasses.hover) :\n this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n ;\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n ;\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id, this.isServerBlazor);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n ;\n /**\n * Hides the spinner loader.\n * @returns void.\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n * @returns void.\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (!(this.isServerBlazor && (e.action === 'open' || e.action === 'space')) && isNullOrUndefined(this.list) ||\n (!isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0) || this.isRequested) {\n if (!(this.isServerBlazor && isNavAction)) {\n return;\n }\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup();\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else {\n var nextItem = void 0;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n }\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup();\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n ;\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n ;\n DropDownList.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n */\n DropDownList.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n ;\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup();\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup();\n }\n var proxy_1 = this;\n var duration = (isBlazor()) ? 1000 : (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () { proxy_1.cloneElements(); proxy_1.isSecondClick = true; }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (_this.isServerBlazor) {\n // tslint:disable-next-line\n _this.interopAdaptor.invokeMethodAsync('OnServerItemData', _this.itemData);\n }\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerItemData', this.itemData);\n }\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n if (isBlazor() && dataItem.text !== null || dataItem.text !== '') {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerValueTemplate', dataItem);\n }\n if (this.valueTemplate && this.itemData !== null && !this.isServerBlazor) {\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, true);\n this.setValueTemplate();\n }\n else if (this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if (this.isPopupOpen) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n if (this.isFilterLayout() && this.filterInput) {\n attributes(this.filterInput, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n attributes(this.inputElement, { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id });\n this.targetElement().removeAttribute('aria-live');\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n this.valueTempElement.innerHTML = '';\n var templateData = (isBlazor()) ? JSON.parse(JSON.stringify(this.itemData)) : this.itemData;\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // tslint:disable-next-line\n var valueCompTemp = compiledString(templateData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, true, true);\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n ;\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n ;\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\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 if (this.isServerBlazor && this.enablePersistence) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('ServerChange');\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.isServerBlazor && this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow \n case 40: //down arrow \n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow \n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab \n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.getModuleName() === 'combobox' && this.isFiltering() && !this.beforePopupOpen)\n ? !this.beforePopupOpen : this.beforePopupOpen;\n if (this.filterInput.value === '' && this.getModuleName() !== 'dropdownlist') {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n }\n else {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n }\n };\n /**\n * To filter the 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 */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n if (this.isServerBlazor) {\n parentElement.innerHTML = '';\n }\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n ;\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.updateValues();\n this.initRemoteRender = false;\n this.initial = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var checkVal = list.some(function (x) { return x[checkField_1] === _this.value; });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n });\n }\n }\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }, 0);\n }\n else {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index != null) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n ;\n DropDownList.prototype.renderPopup = function () {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = (_this.serverPopupEle) ? _this.serverPopupEle : _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate && !_this.isServerBlazor) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate && !_this.isServerBlazor) {\n _this.setFooterTemplate(popupEle);\n }\n if (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer')) {\n popupEle.appendChild(popupEle.querySelector('.e-ddl-footer'));\n }\n document.body.appendChild(popupEle);\n _this.updateServerPopup(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-header'))) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer'))) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (Browser.isDevice && _this.isFilterLayout()) {\n EventHandler.add(_this.list, 'scroll', _this.listScroll, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true' });\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = (isBlazor() && _this.isServerRendered) ? null : _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.serverBlazorUpdateSelection();\n _this.bindServerScrollEvent();\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.serverBlazorUpdateSelection = function () {\n if (this.isServerBlazor && (this.value !== null || this.index !== null || this.text !== null) ||\n (this.getModuleName() !== 'dropdownlist' && !this.isTyped)) {\n if (this.getModuleName() === 'dropdownlist') {\n this.removeSelection();\n this.removeFocus();\n this.removeHover();\n this.updateValues();\n }\n if (this.getModuleName() === 'combobox' && this.ulElement &&\n this.findListElement(this.ulElement, 'li', 'data-value', this.value) && !this.isTyped) {\n this.updateValues();\n }\n if (this.isServerBlazor && this.getModuleName() !== 'dropdownlist' &&\n (this.text === '' || this.text === null) && this.ulElement) {\n if (!this.ulElement.querySelector('li').classList.contains(dropDownBaseClasses.hover)) {\n addClass([this.ulElement.querySelector('li')], dropDownBaseClasses.hover);\n }\n }\n }\n };\n DropDownList.prototype.bindServerScrollEvent = function () {\n if (this.isServerBlazor && this.list) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n }\n };\n DropDownList.prototype.updateServerPopup = function (popupEle) {\n if (this.isServerBlazor) {\n if (popupEle && popupEle.querySelector('li')) {\n removeClass([popupEle.querySelector('.e-content')], ['e-nodata']);\n }\n this.initial = false;\n popupEle.removeAttribute('style');\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // tslint:disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\n _this.DropDownBaseresetBlazorTemplates(isResetItem, isResetItem, true, true, false, true, true);\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n var formElement = closest(_this.inputElement, 'form');\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.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 = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.listScroll = function () {\n this.filterInput.blur();\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n EventHandler.remove(this.list, 'scroll', this.listScroll);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlur);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false', 'aria-activedescendant': null });\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = (isBlazor() && this.isServerRendered) ? null : this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete' && !_this.isServerBlazor) {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n var popupHolderEle = select('#' + this.element.id + '_popup_holder', document);\n if (this.isServerBlazor && this.serverPopupEle && popupHolderEle) {\n popupHolderEle.appendChild(this.serverPopupEle);\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerClosePopup');\n }\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n // tslint:disable-next-line\n DropDownList.prototype.render = function () {\n if (this.isServerBlazor) {\n this.inputElement = this.element;\n this.inputWrapper = { container: this.element.parentElement };\n this.hiddenElement = this.inputWrapper.container.querySelector('select');\n this.inputWrapper.buttons = [this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon')];\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.inputWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.element);\n }\n Input.bindInitialEvent({\n element: this.element,\n buttons: null, customTag: null,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n this.setFields();\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n this.initial = false;\n }\n else {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) { e.stopImmediatePropagation(); };\n this.inputElement.onchange = function (e) { e.stopImmediatePropagation(); };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n ;\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(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 footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(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 headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n * @private\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.isServerBlazor) {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\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': break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'width':\n this.setEleWidth(newProp.width);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n break;\n case 'readonly':\n if (this.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this.inputElement);\n }\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var li = this.getElementByText(newProp.text);\n if (!this.checkValidLi(li)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (!this.isServerBlazor) {\n this.setOldText(oldProp.text);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this.clearAll();\n break;\n }\n this.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var item = this.getElementByValue(newProp.value);\n if (!this.checkValidLi(item)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (!this.isServerBlazor) {\n this.setOldValue(oldProp.value);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender && this.liCollections) {\n var element = this.liCollections[newProp.index];\n if (!this.checkValidLi(element)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else if (!this.isServerBlazor) {\n this.index = oldProp.index;\n }\n }\n this.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this.popupObj) {\n this.setFooterTemplate(this.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this.popupObj) {\n this.setHeaderTemplate(this.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this.itemData) && this.valueTemplate != null) {\n this.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.actionCompleteData = { ulElement: this.ulElement,\n list: this.listData, isUpdated: true };\n this.updateSelectElementData(this.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, newProp.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputElement, this.inputWrapper, null, this.createElement);\n this.bindClearEvent();\n break;\n default:\n var ddlProps = void 0;\n ddlProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, ddlProps.newProperty, ddlProps.oldProperty);\n break;\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name.\n * @private\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /**\n * Opens the popup that displays the list of items.\n * @returns void.\n */\n DropDownList.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\n }\n if (isBlazor() && this.itemTemplate) {\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList();\n }\n else if (this.isFiltering() && this.isServerBlazor) {\n this.renderList();\n }\n if (!this.isServerBlazor) {\n this.invokeRenderPopup();\n }\n var popupHolderEle = !this.isFiltering() || select('#' + this.element.id + '_popup_holder', document);\n var isDropdownComp = this.getModuleName() === 'dropdownlist' || !this.isFiltering();\n if (this.isServerBlazor && popupHolderEle && !isNullOrUndefined(this.list) && isDropdownComp) {\n this.invokeRenderPopup();\n }\n };\n DropDownList.prototype.invokeRenderPopup = function () {\n if (Browser.isDevice && this.isFilterLayout()) {\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.renderPopup();\n }\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n };\n DropDownList.prototype.clientRenderPopup = function (data, popupEle) {\n if (popupEle) {\n this.serverPopupEle = popupEle;\n this.list = popupEle.querySelector('.e-dropdownbase.e-content') ?\n popupEle.querySelector('.e-dropdownbase.e-content') : this.list;\n this.ulElement = this.list.querySelector('ul');\n if (isNullOrUndefined(this.ulElement) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n addClass([this.list], [dropDownBaseClasses.noData]);\n }\n this.liCollections = this.ulElement ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li) : [];\n this.listData = data;\n if (this.getModuleName() === 'autocomplete' && this.liCollections.length > 0) {\n this.renderHightSearch();\n }\n this.initRemoteRender = false;\n if (!this.isPopupOpen) {\n this.serverBlazorUpdateSelection();\n }\n this.unWireListEvents();\n this.wireListEvents();\n if (this.isServerIncrementalSearch && this.searchKeyEvent) {\n this.isServerIncrementalSearch = false;\n this.initial = false;\n this.onServerIncrementalSearch(this.searchKeyEvent);\n }\n if (this.isServerNavigation && this.searchKeyEvent) {\n if (this.searchKeyEvent.action === 'down' || this.searchKeyEvent.action === 'up') {\n this.isServerNavigation = false;\n this.updateUpDownAction(this.searchKeyEvent);\n }\n else if (this.searchKeyEvent.action === 'home' || this.searchKeyEvent.action === 'end') {\n this.isServerNavigation = false;\n this.updateHomeEndAction(this.searchKeyEvent);\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup();\n }\n if (this.getModuleName() !== 'dropdownlist') {\n this.onActionComplete(this.ulElement, this.listData);\n }\n }\n else if (data != null && this.listData !== data) {\n this.listData = data;\n this.initRemoteRender = false;\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search \n };\n DropDownList.prototype.updateclientItemData = function (data) {\n this.listData = data;\n };\n DropDownList.prototype.initValueItemData = function (selectData) {\n this.itemData = selectData;\n this.previousValue = this.value;\n this.initial = false;\n };\n DropDownList.prototype.serverUpdateListElement = function (data, popupEle) {\n this.listData = data;\n if (this.ulElement) {\n this.liCollections = this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n }\n };\n /**\n * Hides the popup if it is in an open state.\n * @returns void.\n */\n DropDownList.prototype.hidePopup = function (e) {\n var isHeader = (this.headerTemplate) ? true : false;\n var isFooter = (this.headerTemplate) ? true : false;\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, false, isHeader, isFooter);\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup();\n var dataItem = this.getItemData();\n var isSelectVal = this.isServerBlazor ? !isNullOrUndefined(this.value) : !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /**\n * Sets the focus on the component for interaction.\n * @returns void.\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n };\n /**\n * Moves the focus from the component if the component is already focused.\n * @returns void.\n */\n DropDownList.prototype.focusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\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 DropDownList.prototype.destroy = function () {\n this.isActive = false;\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerBlazor || (this.popupObj && document.body.contains(this.popupObj.element))) {\n this.hidePopup();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n if (this.isServerBlazor) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n }\n }\n if (!this.isServerBlazor) {\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'aria-placeholder',\n 'placeholder', 'aria-owns', 'aria-labelledby', 'aria-haspopup', 'aria-expanded',\n 'aria-activedescendant', 'autocomplete', 'aria-readonly', 'autocorrect',\n 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n _super.prototype.destroy.call(this);\n }\n };\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /**\n * Allows you to clear the selected values from the component.\n * @returns void.\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","import { createElement, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '1' } });\n this.pagerCons = createElement('span', { className: 'e-constant', innerHTML: isBlazor() ?\n this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown') });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n cssClass: 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: parseInt(this.dropDownListObject.value, 10) });\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.pagerModule.pageSize === this.pagerModule.totalRecordsCount) {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerAllDropDown') :\n this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[i] = parseInt(item[i], 10) ? item[i].toString() : (this.pagerModule.getLocalizedLabel(item[i]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[i]) : item[i];\n }\n return item;\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n this.dropDownListObject[prop] = value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n * @method destroy\n * @return {void}\n * @hidden\n */\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n * @param {Pager} pagerModule?\n * @returns defaultType\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': 'Pager external message' } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n * @return {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n var pagerObj;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n this.pagerObj = new Pager(pagerObj);\n this.pagerObj.hasParent = true;\n this.pagerObj.on('pager-refresh', this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[i].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[i].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[i]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[j]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n * @return {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n * @return {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[prop] = newProp[prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n this.pageSettings.currentPage = e.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, type: events.actionBegin\n };\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n e.cancel = true;\n }\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function (e) {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.addEventListener('created', this.handlers.created.bind(this));\n }\n this.parent.on(events.initialLoad, this.handlers.load, this);\n this.parent.on(events.initialEnd, this.handlers.end, this); //For initial rendering\n this.parent.on(events.dataReady, this.handlers.ready, this);\n this.parent.on(events.pageComplete, this.handlers.complete, this);\n this.parent.on(events.uiUpdate, this.handlers.updateLayout, this);\n this.parent.on(events.inBoundModelChanged, this.handlers.inboundChange, this);\n this.parent.on(events.keyPressed, this.handlers.keyPress, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return this.parent.isReact && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n };\n /**\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.removeEventListener('created', this.handlers.created);\n }\n this.parent.off('pager-refresh', this.renderReactPagerTemplate);\n this.parent.off(events.initialLoad, this.handlers.load);\n this.parent.off(events.initialEnd, this.handlers.end); //For initial rendering\n this.parent.off(events.dataReady, this.handlers.ready);\n this.parent.off(events.pageComplete, this.handlers.complete);\n this.parent.off(events.uiUpdate, this.handlers.updateLayout);\n this.parent.off(events.inBoundModelChanged, this.handlers.inboundChange);\n this.parent.off(events.keyPressed, this.handlers.keyPress);\n };\n /**\n * To destroy the pager\n * @return {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked } from '../base/util';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables \n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n * @return {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n * @return {void}\n * @hidden\n */\n Selection.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.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.e-movablecontent')) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === 'Left-Right' && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n var added = 'addedRecords';\n var deleted = 'deletedRecords';\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[added]) :\n this.parent.editModule.getBatchChanges()[added].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[deleted];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[i][primaryKey] === currentRecords[j][primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n this.parent.notify(events.selectVirtualRow, { selectedIndex: index });\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n return;\n }\n }\n else {\n selectData = this.getCurrentBatchRecordChanges()[index];\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (index === this.selectedRowIndexes[0]) : false);\n var args;\n var can = 'cancel';\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, previousRowIndex: this.prevRowIndex,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', [index]);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === 'Left-Right' && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === 'Left-Right' && frRow) {\n mObj[frozenRightRow] = frRow;\n mObj[previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n /**\n * Selects a collection of rows by index.\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @return {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n }\n var isHybrid = 'isHybrid';\n this.activeTarget();\n var args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(rowIndexes.slice(-1)[0]);\n var selectRowFn = function (index) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === 'Left-Right' ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIdx = rowIndexes_1[_i];\n selectRowFn(rowIdx);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: _this.prevRowIndex,\n row: selectedRows, prevRow: gObj.getRows()[_this.prevRowIndex],\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n * @param {number} startIndex - Specifies the row indexes.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n for (var _i = 0, rowIndexes_2 = rowIndexes; _i < rowIndexes_2.length; _i++) {\n var rowIndex = rowIndexes_2[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n }\n else {\n var isHybrid = 'isHybrid';\n this.activeTarget();\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRow, prevRow: gObj.getRows()[this.prevRowIndex],\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if (chkState) {\n this.selectedRowState[pKey_1] = chkState;\n if (!this.persistSelectedData.some(function (data) { return data[_this.primaryKey] === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey) {\n var _this = this;\n delete (this.selectedRowState[pKey]);\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return data[_this.primaryKey] === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n * @return {void}\n */\n Selection.prototype.clearSelection = function () {\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[i]]\n : this.parent.getDataRows()[this.selectedRowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[i]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n mRow_1.push(gObj.getMovableRows()[this.selectedRowIndexes[i]]);\n if (gObj.getFrozenMode() === 'Left-Right') {\n fRightRow_1.push(gObj.getFrozenRightRows()[this.selectedRowIndexes[i]]);\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[i], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI || isBlazor()) {\n element[j].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[j], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[j], false);\n }\n _this.updateCheckBoxes(element[j]);\n }\n if (isBlazor() && _this.parent.isServerRendered && _this.parent.enableVirtualization) {\n _this.getRenderer().setSelection(null, false, true);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[i]);\n if (movableRow) {\n if (!_this.disableUI || isBlazor()) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[i]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked)) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && this.parent.checkAllRows === 'Uncheck'\n && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ?\n this.persistSelectedData : data, foreignKeyData: foreignKeyData,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var data_2 = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[rowInString] = row;\n rowDeselectObj[target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[rowidx] = rowIndex[0];\n rowDeselectObj[rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[data_2] = rowDeselectObj[data_2][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n }\n else {\n var rowIndex_2 = 'rowIndex';\n var data_3 = 'data';\n rowDeselectObj[rowIndex_2] = rowDeselectObj[rowIndex_2][rowDeselectObj[rowIndex_2].length - 1];\n rowDeselectObj[data_3] = rowDeselectObj[data_3][rowDeselectObj[data_3].length - 1];\n }\n this.parent.trigger(type, (!isBlazor() || this.parent.isJsComponent) && this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var selectedTable;\n var cIdx;\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[currentCell] = cellSelectingArgs[currentCell] ? cellSelectingArgs[currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = void 0;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n args = { data: selectedData, cellIndex: cellIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n if (!isBlazor()) {\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: edIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n }\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[i].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[i].cellIndexes[j] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[i].rowIndex, cellIndex: rowCellIndexes[i].cellIndexes[j] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n * @param {IIndex} startIndex - Defines the collection of row and column index.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var isHybrid = 'isHybrid';\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === 'frozen-left' ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === 'frozen-right' ? gObj.getFrozenRightRowsObject() : []\n ]);\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === 'frozen-right' ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n foreignKeyData.push(rowObj.cells[idx].foreignKeyData);\n var args = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest, isCtrlPressed: this.isMultiCtrlRequest\n };\n }\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[index].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: cellIndexes[0], selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute('aria-colindex'), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[index].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[index].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var selectedTable = void 0;\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[i].rowIndex]);\n var rowObj = this.getRowObj(rowCell[i].rowIndex);\n for (var j = 0, cLen = rowCell[i].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[i].cellIndexes[j]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[i].cellIndexes[j]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[i].classList.remove('e-cellselectionbackground');\n selectedCells[i].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[i].querySelectorAll('.e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute('aria-rowindex'), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n }\n else {\n var td = parentsUntil(e.target, 'e-rowcell');\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, 'e-rowcell');\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute('aria-colindex'), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === 'Left-Right' && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '0 0 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 0 0';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '2p 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.bdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n this.mcBdrElement.style.borderWidth = '2px';\n this.frcBdrElement.style.borderWidth = '2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n this.mhBdrElement.style.borderWidth = '2px';\n this.frhBdrElement.style.borderWidth = '2px';\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = '2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = '2px';\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, 'e-movablecontent') ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseInt(args.value, 10));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[rowIndex].querySelectorAll(cls)));\n }\n }\n return cells;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute('aria-colindex'), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n var col;\n switch (true) { //direction \n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, 'e-rowcell'):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute('aria-colindex'), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, 'e-rowcell');\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell') {\n var target = e.target;\n var rowIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n var cellIndex = parseInt(target.getAttribute('aria-colindex'), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, 'e-rowcell');\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute('aria-colindex'), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === 'Left-Right' && col.getFreezeTableName() === 'frozen-right';\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, 'e-table'))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n !isFrozenRow ? !isFrozenCol ? this.parent.getContentTable().parentElement.appendChild(this.autofill) :\n this.parent.contentModule.getMovableContent().appendChild(this.autofill) :\n !isFrozenCol ? this.parent.getHeaderTable().parentElement.appendChild(this.autofill) :\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n if (isFrozenRight) {\n isFrozenRow ? this.parent.getFrozenRightHeader().appendChild(this.autofill)\n : this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, 'e-headercontent') && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, 'e-editedrow')) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, 'e-rowcell') && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit) {\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute('aria-rowindex'), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n };\n /**\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.initialEnd, this.initializeSelection, this);\n this.parent.on(events.rowSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.cellSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.cellFocused, this.onCellFocused, this);\n this.parent.on(events.beforeFragAppend, this.clearSelAfterRefresh, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.on(events.rowsRemoved, this.rowsRemoved, this);\n this.parent.on(events.headerRefreshed, this.refreshHeader, this);\n this.addEventListener_checkbox();\n };\n /**\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.initialEnd, this.initializeSelection);\n this.parent.off(events.rowSelectionComplete, this.onActionComplete);\n this.parent.off(events.cellSelectionComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.cellFocused, this.onCellFocused);\n this.parent.off(events.beforeFragAppend, this.clearSelAfterRefresh);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.off(events.rowsRemoved, this.rowsRemoved);\n this.parent.off(events.headerRefreshed, this.refreshHeader);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n delete (this.selectedRowState[e.records[i][this.primaryKey]]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n ;\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n ;\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n this.initPerisistSelection();\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === 'Left-Right';\n if (!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n this.parent.off(events.contentReady, this.checkBoxSelectionChanged);\n var gobj = this.parent;\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n if (isNullOrUndefined(this.selectedRowState[res[i][this.primaryKey]]) && res[i][this.chkField]) {\n this.selectedRowState[res[i][this.primaryKey]] = res[i][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!this.parent.getDataModule().isRemote() && !isBlazor()) {\n if (state) {\n if (this.parent.groupSettings.columns.length) {\n for (var _i = 0, _a = this.getData().records; _i < _a.length; _i++) {\n var data = _a[_i];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n else {\n for (var _b = 0, _c = this.getData(); _b < _c.length; _b++) {\n var data = _c[_b];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (rows !== null && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[j]);\n var pKey = rowObj ? rowObj.data ? rowObj.data[this.primaryKey] : null : null;\n if (pKey === null) {\n return;\n }\n var checkState = void 0;\n var chkBox = rows[j].querySelector('.e-checkselect');\n if (this.selectedRowState[pKey] || (this.parent.checkAllRows === 'Check' &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[j].getAttribute('aria-rowindex'), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[j], checkState);\n }\n this.isSingleSel() && indexes.length > 0 ? this.selectRow(indexes[0], true) : this.selectRows(indexes);\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.e-editedrow');\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add' && this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = [];\n if (!isBlazor()) {\n records = e.data;\n }\n else {\n records = this.getSelectedRecords();\n }\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i][this.primaryKey])) {\n this.updatePersistDelete(data[i][this.primaryKey]);\n }\n }\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n this.refreshPersistSelection();\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[i].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[i], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = this.parent.getDataModule().isRemote() ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = (!this.parent.getDataModule().isRemote() && !isBlazor()) ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n if (isBlazor() && this.parent.enableVirtualization &&\n !isNullOrUndefined(this.parent.contentModule.currentInfo.endIndex)) {\n this.selectRowsByRange(this.parent.contentModule.currentInfo.startIndex, this.parent.contentModule.currentInfo.endIndex);\n }\n else {\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return data[_this.primaryKey] in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', !state, 'checkbox', null);\n this.checkBoxState = !state;\n if (!state) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n var rowCache = this.parent.contentModule[vgenerator].rowCache;\n Object[values](rowCache).forEach(function (x) { return x.isSelected = true; });\n for (var i = 0; i < Object.keys(rowCache).length; i++) {\n if (this.parent.selectionModule.selectedRowIndexes.indexOf(Number(Object.keys(rowCache)[i])) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(Number(Object.keys(rowCache)[i]));\n }\n }\n }\n }\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.e-rowcell');\n var checkObj = checkBox;\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n if (index && this.parent.getRowByIndex(index).getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n ;\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = void 0;\n var isServerRenderedVirtualization = isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization;\n if (isServerRenderedVirtualization) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n checkToSelectAll = !Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected === undefined || x.isSelected === false; }).length &&\n Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected; }).length === this.selectedRowIndexes.length;\n }\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection && !(isServerRenderedVirtualization)) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if (checkToSelectAll || checkedLen === this.totalRecordsCount && this.totalRecordsCount\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)\n && checkedLen === this.getData().length)) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (isServerRenderedVirtualization && !this.selectedRowIndexes.length ||\n checkedLen === 0 && !isServerRenderedVirtualization || this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (parentsUntil(target, 'e-row') || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n this.isMultiShiftRequest = e.shiftKey;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.querySelectorAll('.e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, 'e-row')) ? true : false;\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, 'e-rowcell');\n if ((target && target.parentElement.classList.contains('e-row') && !this.parent.selectionSettings.checkboxOnly) || chkSelect) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.e-rowcell').classList.contains('e-gridchkbox'))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (isBlazor() && this.parent.enableVirtualization && this.parent.isServerRendered) {\n var rowIndexes = this.parent.getSelectedRowIndexes();\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', rowIndexes);\n }\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute('aria-rowindex'));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.e-rowcell'))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.e-rowcell'))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute('aria-colindex'));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType()) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute('aria-colindex'), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n this.addAttribute(this.target);\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].columns) {\n this.getstackedColumns(column[i].columns);\n }\n else {\n innerColumnIndexes.push(column[i]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.querySelectorAll('.e-rowcell'));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n * @param {number} startIndex\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[index])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n * @param {number} startIndex\n * @param {number} endIndex\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n * @param {number[]} columnIndexes\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[i]).uid), columnIndexes[i]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n * @param {number} startIndex\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var frzCols = gObj.getFrozenColumns();\n var isFreeze = frzCols && startIndex >= frzCols;\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n var rows = !isFreeze ? gObj.getDataRows() : gObj.getMovableRows();\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === 'frozen-right') {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().querySelectorAll('.e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[i]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[i]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[clearIndex].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[i]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.e-movablecontent')) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[aria-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[i].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[startIndex])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[startIndex].isSelected = true;\n if (col.getFreezeTableName() === 'frozen-right') {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[j].classList.contains('e-row')) {\n if ((rows[j].classList.contains('e-editedrow') || rows[j].classList.contains('e-addedrow')) &&\n this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(rows[j].querySelector('tr').childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].querySelector('tr').childNodes[startIndex]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[j].childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].childNodes[startIndex]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n this.parent.selectedRowIndex = index;\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](grid/#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\n/**\n * ColumnWidthService\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[j], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, this.parent.getColumnIndexByField(collection[i].field));\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', this.parent.getColumnIndexByField(collection[i].field) + this.parent.getIndentCount(), true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[k].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[k].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n var mCont = this.parent.getContent().querySelector('.e-movablecontent');\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols && mHdr && mHdr.querySelector('colgroup')) {\n headerCol = mHdr.querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector('colgroup');\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector('colgroup').children[index];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup');\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector('colgroup').children[index];\n }\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[i], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[i].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[i].querySelector('colgroup').children[j]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[index].style.width = fWidth;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector('colgroup')) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector('colgroup').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[index].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[index].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /** @hidden */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.e-frozencontent');\n var movableContent = this.parent.getContent().querySelector('.e-movablecontent');\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = ['e-gridheader', 'e-gridfooter', 'e-groupdroparea', 'e-gridpager', 'e-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === 'frozen-left' || column.getFreezeTableName() === 'frozen-right')) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('.e-table');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.e-table');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild) {\n this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.e-movablecontent').firstElementChild.style.width =\n movableWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","module.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p=\"\",t(0)}([function(e,t,n){var r,o;n(49),r=n(13);var i=n(47);o=r=r||{},\"object\"!=typeof r.default&&\"function\"!=typeof r.default||(o=r=r.default),\"function\"==typeof o&&(o=o.options),o.render=i.render,o.staticRenderFns=i.staticRenderFns,e.exports=r},function(e,t,n){e.exports=!n(3)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(e,t){var n=e.exports={version:\"2.5.3\"};\"number\"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on \"+e);return e}},function(e,t,n){var r=n(4),o=n(2),i=n(24),s=n(28),u=\"prototype\",a=function(e,t,n){var c,l,p,f=e&a.F,d=e&a.G,h=e&a.S,m=e&a.P,v=e&a.B,y=e&a.W,g=d?o:o[t]||(o[t]={}),w=g[u],x=d?r:h?r[t]:(r[t]||{})[u];d&&(n=t);for(c in n)l=!f&&x&&void 0!==x[c],l&&c in g||(p=l?x[c]:n[c],g[c]=d&&\"function\"!=typeof x[c]?n[c]:v&&l?i(p,r):y&&x[c]==p?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t[u]=e[u],t}(p):m&&\"function\"==typeof p?i(Function.call,p):p,m&&((g.virtual||(g.virtual={}))[c]=p,e&a.R&&w&&!w[c]&&s(w,c,p)))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,e.exports=a},function(e,t,n){var r=n(23);e.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(e){return\"String\"==r(e)?e.split(\"\"):Object(e)}},function(e,t,n){var r=n(21),o=n(29),i=n(41),s=Object.defineProperty;t.f=n(1)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return s(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(e[t]=n.value),e}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(8),o=n(6);e.exports=function(e){return r(o(e))}},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t-1)return e[o];return n||\"\"},toggleDropdown:function(){this.showDropdown=!this.showDropdown&&!this.disabled,this.showDropdown||this.$emit(\"blur\",(0,u.default)({},this.value))},onHourSelect:function(e){this.$emit(\"input\",(0,u.default)({},this.value,(0,i.default)({},this.hourType,e)))},onMinuteSelect:function(e){this.$emit(\"input\",(0,u.default)({},this.value,(0,i.default)({},this.minuteType,e)))},onSecondSelect:function(e){this.$emit(\"input\",(0,u.default)({},this.value,(0,i.default)({},this.secondType,e)))},onApmSelect:function(e){this.$emit(\"input\",(0,u.default)({},this.value,(0,i.default)({},this.apmType,e)))},clearTime:function(){var e={};e[this.hourType]=\"\",e[this.minuteType]=\"\",e[this.secondType]=\"\",this.apm=this.apms[0],this.$emit(\"input\",e)}}}},function(e,t,n){e.exports={default:n(18),__esModule:!0}},function(e,t,n){e.exports={default:n(19),__esModule:!0}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(15),i=r(o);t.default=function(e,t,n){return t in e?(0,i.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(14),i=r(o);t.default=i.default||function(e){for(var t=1;tl;)if(u=a[l++],u!=u)return!0}else for(;c>l;l++)if((e||l in a)&&a[l]===n)return e||l||0;return!e&&-1}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(20);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var r=n(5),o=n(4).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t){e.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(9),o=n(35);e.exports=n(1)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(1)&&!n(3)(function(){return 7!=Object.defineProperty(n(25)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(e,t,n){\"use strict\";var r=n(33),o=n(31),i=n(34),s=n(40),u=n(8),a=Object.assign;e.exports=!a||n(3)(function(){var e={},t={},n=Symbol(),r=\"abcdefghijklmnopqrst\";return e[n]=7,r.split(\"\").forEach(function(e){t[e]=e}),7!=a({},e)[n]||Object.keys(a({},t)).join(\"\")!=r})?function(e,t){for(var n=s(e),a=arguments.length,c=1,l=o.f,p=i.f;a>c;)for(var f,d=u(arguments[c++]),h=l?r(d).concat(l(d)):r(d),m=h.length,v=0;m>v;)p.call(d,f=h[v++])&&(n[f]=d[f]);return n}:a},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(27),o=n(11),i=n(22)(!1),s=n(36)(\"IE_PROTO\");e.exports=function(e,t){var n,u=o(e),a=0,c=[];for(n in u)n!=s&&r(u,n)&&c.push(n);for(;t.length>a;)r(u,n=t[a++])&&(~i(c,n)||c.push(n));return c}},function(e,t,n){var r=n(32),o=n(26);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(37)(\"keys\"),o=n(42);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(4),o=\"__core-js_shared__\",i=r[o]||(r[o]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t,n){var r=n(10),o=Math.max,i=Math.min;e.exports=function(e,t){return e=r(e),e<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(10),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(6);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(5);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&\"function\"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if(\"function\"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&\"function\"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+r).toString(36))}},function(e,t,n){var r=n(7);r(r.S+r.F,\"Object\",{assign:n(30)})},function(e,t,n){var r=n(7);r(r.S+r.F*!n(1),\"Object\",{defineProperty:n(9).f})},function(e,t,n){t=e.exports=n(12)(),t.i(n(46),\"\"),t.push([e.id,\"\",\"\"])},function(e,t,n){t=e.exports=n(12)(),t.push([e.id,\".time-picker{display:inline-block;position:relative;font-size:1em;width:10em;font-family:sans-serif;vertical-align:middle}.time-picker *{box-sizing:border-box}.time-picker input.display-time{border:1px solid #d2d2d2;width:10em;height:2.2em;padding:.3em .5em;font-size:1em}.time-picker .clear-btn{position:absolute;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;top:0;right:0;bottom:0;margin-top:-.15em;z-index:3;font-size:1.1em;line-height:1em;vertical-align:middle;width:1.3em;color:#d2d2d2;background:hsla(0,0%,100%,0);text-align:center;font-style:normal;transition:color .2s}.time-picker .clear-btn:hover{color:#797979;cursor:pointer}.time-picker .time-picker-overlay{z-index:2;position:fixed;top:0;left:0;right:0;bottom:0}.time-picker .dropdown{position:absolute;z-index:5;top:calc(2.2em + 2px);left:0;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.15);width:10em;height:10em;font-weight:400}.time-picker .dropdown .select-list{width:10em;height:10em;overflow:hidden;display:flex;flex-flow:row nowrap;align-items:stretch;justify-content:space-between}.time-picker .dropdown ul{padding:0;margin:0;list-style:none;flex:1;overflow-x:hidden;overflow-y:auto}.time-picker .dropdown ul.apms,.time-picker .dropdown ul.minutes,.time-picker .dropdown ul.seconds{border-left:1px solid #fff}.time-picker .dropdown ul li{text-align:center;padding:.3em 0;color:#161616}.time-picker .dropdown ul li:not(.hint):hover{background:rgba(0,0,0,.08);color:#161616;cursor:pointer}.time-picker .dropdown ul li.active,.time-picker .dropdown ul li.active:hover{background:#41b883;color:#fff}.time-picker .dropdown .hint{color:#a5a5a5;cursor:default;font-size:.8em}\",\"\"])},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"span\",{staticClass:\"time-picker\"},[n(\"input\",{staticClass:\"display-time\",attrs:{readonly:!e.disabled,disabled:e.disabled,type:\"text\"},domProps:{value:e.displayTime},on:{click:function(t){t.stopPropagation(),e.toggleDropdown(t)}}}),e._v(\" \"),e.hideClearButton?e._e():n(\"span\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.showDropdown&&e.showClearBtn,expression:\"!showDropdown && showClearBtn\"}],staticClass:\"clear-btn\",on:{click:function(t){t.stopPropagation(),e.clearTime(t)}}},[e._v(\"×\")]),e._v(\" \"),e.showDropdown?n(\"div\",{staticClass:\"time-picker-overlay\",on:{click:function(t){t.stopPropagation(),e.toggleDropdown(t)}}}):e._e(),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showDropdown,expression:\"showDropdown\"}],staticClass:\"dropdown\"},[n(\"div\",{staticClass:\"select-list\"},[n(\"ul\",{staticClass:\"hours\"},[n(\"li\",{staticClass:\"hint\",domProps:{textContent:e._s(e.hourType)}}),e._v(\" \"),e._l(e.hours,function(t){return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.disabledValues.hour.indexOf(t)===-1,expression:\"disabledValues.hour.indexOf(hr) === -1\"}],class:{active:e.value[e.hourType]===t},domProps:{textContent:e._s(t)},on:{click:function(n){n.stopPropagation(),e.onHourSelect(t)}}})})],2),e._v(\" \"),n(\"ul\",{staticClass:\"minutes\"},[n(\"li\",{staticClass:\"hint\",domProps:{textContent:e._s(e.minuteType)}}),e._v(\" \"),e._l(e.minutes,function(t){return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.disabledValues.minute.indexOf(t)===-1,expression:\"disabledValues.minute.indexOf(m) === -1\"}],class:{active:e.value[e.minuteType]===t},domProps:{textContent:e._s(t)},on:{click:function(n){n.stopPropagation(),e.onMinuteSelect(t)}}})})],2),e._v(\" \"),e.secondType?n(\"ul\",{staticClass:\"seconds\"},[n(\"li\",{staticClass:\"hint\",domProps:{textContent:e._s(e.secondType)}}),e._v(\" \"),e._l(e.seconds,function(t){return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.disabledValues.second.indexOf(t)===-1,expression:\"disabledValues.second.indexOf(s) === -1\"}],class:{active:e.value[e.secondType]===t},domProps:{textContent:e._s(t)},on:{click:function(n){n.stopPropagation(),e.onSecondSelect(t)}}})})],2):e._e(),e._v(\" \"),e.apmType?n(\"ul\",{staticClass:\"apms\"},[n(\"li\",{staticClass:\"hint\",domProps:{textContent:e._s(e.apmType)}}),e._v(\" \"),e._l(e.apms,function(t){return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.disabledValues.apm.indexOf(t)===-1,expression:\"disabledValues.apm.indexOf(a) === -1\"}],class:{active:e.value[e.apmType]===t},domProps:{textContent:e._s(t)},on:{click:function(n){n.stopPropagation(),e.onApmSelect(t)}}})})],2):e._e()])])])},staticRenderFns:[]}},function(e,t,n){function r(e,t){for(var n=0;n=0&&y.splice(t,1)}function u(e){var t=document.createElement(\"style\");return t.type=\"text/css\",i(e,t),t}function a(e,t){var n,r,o;if(t.singleton){var i=v++;n=m||(m=u(t)),r=c.bind(null,n,i,!1),o=c.bind(null,n,i,!0)}else n=u(t),r=l.bind(null,n),o=function(){s(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}function c(e,t,n,r){var o=n?\"\":r.css;if(e.styleSheet)e.styleSheet.cssText=g(t,o);else{var i=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(i,s[t]):e.appendChild(i)}}function l(e,t){var n=t.css,r=t.media,o=t.sourceMap;if(r&&e.setAttribute(\"media\",r),o&&(n+=\"\\n/*# sourceURL=\"+o.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p={},f=function(e){var t;return function(){return\"undefined\"==typeof t&&(t=e.apply(this,arguments)),t}},d=f(function(){return/msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase())}),h=f(function(){return document.head||document.getElementsByTagName(\"head\")[0]}),m=null,v=0,y=[];e.exports=function(e,t){t=t||{},\"undefined\"==typeof t.singleton&&(t.singleton=d()),\"undefined\"==typeof t.insertAt&&(t.insertAt=\"bottom\");var n=o(e);return r(n,t),function(e){for(var i=[],s=0;s -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","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};\n/**\n * `e-column` directive represent a column of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\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 AggregateColumnsDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnsDirective, _super);\n function AggregateColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnsDirective.prototype.render = function () {\n return;\n };\n AggregateColumnsDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateColumnsDirective);\n return AggregateColumnsDirective;\n}(Vue));\nexport { AggregateColumnsDirective };\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS Grid.\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar AggregateColumnDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnDirective, _super);\n function AggregateColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnDirective.prototype.render = function () {\n return;\n };\n AggregateColumnDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateColumnDirective);\n return AggregateColumnDirective;\n}(Vue));\nexport { AggregateColumnDirective };\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\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 AggregatesDirective = /** @class */ (function (_super) {\n __extends(AggregatesDirective, _super);\n function AggregatesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregatesDirective.prototype.render = function () {\n return;\n };\n AggregatesDirective = __decorate([\n EJComponentDecorator({})\n ], AggregatesDirective);\n return AggregatesDirective;\n}(Vue));\nexport { AggregatesDirective };\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar AggregateDirective = /** @class */ (function (_super) {\n __extends(AggregateDirective, _super);\n function AggregateDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateDirective.prototype.render = function () {\n return;\n };\n AggregateDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateDirective);\n return AggregateDirective;\n}(Vue));\nexport { AggregateDirective };\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\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 { Grid } from '@syncfusion/ej2-grids';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'currencyCode', 'currentAction', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableVirtualization', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent() {\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-columns\": \"e-column\", \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } };\n _this.tagNameMapper = {};\n _this.ej2Instances = new Grid({});\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 GridComponent.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 GridComponent.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 GridComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n GridComponent.prototype.addRecord = function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n };\n GridComponent.prototype.autoFitColumns = function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n };\n GridComponent.prototype.batchAsyncUpdate = function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n };\n GridComponent.prototype.batchUpdate = function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n };\n GridComponent.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n };\n GridComponent.prototype.clearCellSelection = function () {\n return this.ej2Instances.clearCellSelection();\n };\n GridComponent.prototype.clearFiltering = function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n };\n GridComponent.prototype.clearGrouping = function () {\n return this.ej2Instances.clearGrouping();\n };\n GridComponent.prototype.clearRowSelection = function () {\n return this.ej2Instances.clearRowSelection();\n };\n GridComponent.prototype.clearSelection = function () {\n return this.ej2Instances.clearSelection();\n };\n GridComponent.prototype.clearSorting = function () {\n return this.ej2Instances.clearSorting();\n };\n GridComponent.prototype.closeEdit = function () {\n return this.ej2Instances.closeEdit();\n };\n GridComponent.prototype.copy = function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n };\n GridComponent.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n };\n GridComponent.prototype.dataReady = function () {\n return this.ej2Instances.dataReady();\n };\n GridComponent.prototype.deleteRecord = function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n };\n GridComponent.prototype.deleteRow = function (tr) {\n return this.ej2Instances.deleteRow(tr);\n };\n GridComponent.prototype.destroyTemplate = function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n };\n GridComponent.prototype.detailCollapseAll = function () {\n return this.ej2Instances.detailCollapseAll();\n };\n GridComponent.prototype.detailExpandAll = function () {\n return this.ej2Instances.detailExpandAll();\n };\n GridComponent.prototype.editCell = function (index, field) {\n return this.ej2Instances.editCell(index, field);\n };\n GridComponent.prototype.enableToolbarItems = function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n };\n GridComponent.prototype.endEdit = function () {\n return this.ej2Instances.endEdit();\n };\n GridComponent.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n };\n GridComponent.prototype.extendRequiredModules = function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n };\n GridComponent.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n GridComponent.prototype.getBatchChanges = function () {\n return this.ej2Instances.getBatchChanges();\n };\n GridComponent.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getColumnByField = function (field) {\n return this.ej2Instances.getColumnByField(field);\n };\n GridComponent.prototype.getColumnByUid = function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n };\n GridComponent.prototype.getColumnFieldNames = function () {\n return this.ej2Instances.getColumnFieldNames();\n };\n GridComponent.prototype.getColumnHeaderByField = function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n };\n GridComponent.prototype.getColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getColumnHeaderByUid = function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n };\n GridComponent.prototype.getColumnIndexByField = function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n };\n GridComponent.prototype.getColumnIndexByUid = function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n };\n GridComponent.prototype.getColumns = function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n };\n GridComponent.prototype.getContent = function () {\n return this.ej2Instances.getContent();\n };\n GridComponent.prototype.getContentTable = function () {\n return this.ej2Instances.getContentTable();\n };\n GridComponent.prototype.getCurrentViewRecords = function () {\n return this.ej2Instances.getCurrentViewRecords();\n };\n GridComponent.prototype.getDataModule = function () {\n return this.ej2Instances.getDataModule();\n };\n GridComponent.prototype.getDataRows = function () {\n return this.ej2Instances.getDataRows();\n };\n GridComponent.prototype.getFilterUIInfo = function () {\n return this.ej2Instances.getFilterUIInfo();\n };\n GridComponent.prototype.getFilteredRecords = function () {\n return this.ej2Instances.getFilteredRecords();\n };\n GridComponent.prototype.getFooterContent = function () {\n return this.ej2Instances.getFooterContent();\n };\n GridComponent.prototype.getFooterContentTable = function () {\n return this.ej2Instances.getFooterContentTable();\n };\n GridComponent.prototype.getForeignKeyColumns = function () {\n return this.ej2Instances.getForeignKeyColumns();\n };\n GridComponent.prototype.getFrozenDataRows = function () {\n return this.ej2Instances.getFrozenDataRows();\n };\n GridComponent.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getFrozenLeftCount = function () {\n return this.ej2Instances.getFrozenLeftCount();\n };\n GridComponent.prototype.getFrozenMode = function () {\n return this.ej2Instances.getFrozenMode();\n };\n GridComponent.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getFrozenRightDataRows = function () {\n return this.ej2Instances.getFrozenRightDataRows();\n };\n GridComponent.prototype.getFrozenRightRowByIndex = function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n };\n GridComponent.prototype.getFrozenRightRows = function () {\n return this.ej2Instances.getFrozenRightRows();\n };\n GridComponent.prototype.getFrozenRowByIndex = function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n };\n GridComponent.prototype.getHeaderContent = function () {\n return this.ej2Instances.getHeaderContent();\n };\n GridComponent.prototype.getHeaderTable = function () {\n return this.ej2Instances.getHeaderTable();\n };\n GridComponent.prototype.getHiddenColumns = function () {\n return this.ej2Instances.getHiddenColumns();\n };\n GridComponent.prototype.getMediaColumns = function () {\n return this.ej2Instances.getMediaColumns();\n };\n GridComponent.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getMovableDataRows = function () {\n return this.ej2Instances.getMovableDataRows();\n };\n GridComponent.prototype.getMovableRowByIndex = function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n };\n GridComponent.prototype.getMovableRows = function () {\n return this.ej2Instances.getMovableRows();\n };\n GridComponent.prototype.getPager = function () {\n return this.ej2Instances.getPager();\n };\n GridComponent.prototype.getPrimaryKeyFieldNames = function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n };\n GridComponent.prototype.getRowByIndex = function (index) {\n return this.ej2Instances.getRowByIndex(index);\n };\n GridComponent.prototype.getRowIndexByPrimaryKey = function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n };\n GridComponent.prototype.getRowInfo = function (target) {\n return this.ej2Instances.getRowInfo(target);\n };\n GridComponent.prototype.getRows = function () {\n return this.ej2Instances.getRows();\n };\n GridComponent.prototype.getSelectedColumnsUid = function () {\n return this.ej2Instances.getSelectedColumnsUid();\n };\n GridComponent.prototype.getSelectedRecords = function () {\n return this.ej2Instances.getSelectedRecords();\n };\n GridComponent.prototype.getSelectedRowCellIndexes = function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n };\n GridComponent.prototype.getSelectedRowIndexes = function () {\n return this.ej2Instances.getSelectedRowIndexes();\n };\n GridComponent.prototype.getSelectedRows = function () {\n return this.ej2Instances.getSelectedRows();\n };\n GridComponent.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n };\n GridComponent.prototype.getUidByColumnField = function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n };\n GridComponent.prototype.getVisibleColumns = function () {\n return this.ej2Instances.getVisibleColumns();\n };\n GridComponent.prototype.goToPage = function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n };\n GridComponent.prototype.groupCollapseAll = function () {\n return this.ej2Instances.groupCollapseAll();\n };\n GridComponent.prototype.groupColumn = function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n };\n GridComponent.prototype.groupExpandAll = function () {\n return this.ej2Instances.groupExpandAll();\n };\n GridComponent.prototype.hideColumns = function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n };\n GridComponent.prototype.hideScroll = function () {\n return this.ej2Instances.hideScroll();\n };\n GridComponent.prototype.hideSpinner = function () {\n return this.ej2Instances.hideSpinner();\n };\n GridComponent.prototype.isFrozenGrid = function () {\n return this.ej2Instances.isFrozenGrid();\n };\n GridComponent.prototype.openColumnChooser = function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n };\n GridComponent.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n GridComponent.prototype.print = function () {\n return this.ej2Instances.print();\n };\n GridComponent.prototype.refresh = function () {\n return this.ej2Instances.refresh();\n };\n GridComponent.prototype.refreshColumns = function () {\n return this.ej2Instances.refreshColumns();\n };\n GridComponent.prototype.refreshHeader = function () {\n return this.ej2Instances.refreshHeader();\n };\n GridComponent.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n };\n GridComponent.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n };\n GridComponent.prototype.reorderColumns = function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n };\n GridComponent.prototype.reorderRows = function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n };\n GridComponent.prototype.saveCell = function () {\n return this.ej2Instances.saveCell();\n };\n GridComponent.prototype.search = function (searchString) {\n return this.ej2Instances.search(searchString);\n };\n GridComponent.prototype.selectCell = function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n };\n GridComponent.prototype.selectCells = function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n };\n GridComponent.prototype.selectCellsByRange = function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n };\n GridComponent.prototype.selectRow = function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n };\n GridComponent.prototype.selectRows = function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n };\n GridComponent.prototype.selectRowsByRange = function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n };\n GridComponent.prototype.serverExcelExport = function (url) {\n return this.ej2Instances.serverExcelExport(url);\n };\n GridComponent.prototype.serverPdfExport = function (url) {\n return this.ej2Instances.serverPdfExport(url);\n };\n GridComponent.prototype.setCellValue = function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n };\n GridComponent.prototype.setGridContent = function (element) {\n return this.ej2Instances.setGridContent(element);\n };\n GridComponent.prototype.setGridContentTable = function (element) {\n return this.ej2Instances.setGridContentTable(element);\n };\n GridComponent.prototype.setGridHeaderContent = function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n };\n GridComponent.prototype.setGridHeaderTable = function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n };\n GridComponent.prototype.setGridPager = function (element) {\n return this.ej2Instances.setGridPager(element);\n };\n GridComponent.prototype.setRowData = function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n };\n GridComponent.prototype.showColumns = function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n };\n GridComponent.prototype.showSpinner = function () {\n return this.ej2Instances.showSpinner();\n };\n GridComponent.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n };\n GridComponent.prototype.startEdit = function () {\n return this.ej2Instances.startEdit();\n };\n GridComponent.prototype.ungroupColumn = function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n };\n GridComponent.prototype.updateCell = function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n };\n GridComponent.prototype.updateExternalMessage = function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n };\n GridComponent.prototype.updateRow = function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n };\n GridComponent.prototype.updateRowValue = function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n };\n GridComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], GridComponent);\n return GridComponent;\n}(ComponentBase));\nexport { GridComponent };\nexport var GridPlugin = {\n name: 'ejs-grid',\n install: function (Vue) {\n Vue.component(GridPlugin.name, GridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\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 * `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","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 `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","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 * 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","/**\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.substring(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.substring(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 * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\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 /* tslint:disable-next-line:max-line-length */\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 /* tslint:disable-next-line:max-line-length */\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 * PdfBorders.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../../../graphics/pdf-pen';\nimport { PdfDashStyle } from './../../../graphics/enum';\nimport { PdfColor } from './../../../graphics/pdf-color';\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nexport { PdfBorders };\nvar PdfPaddings = /** @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\nexport { PdfPaddings };\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 { PdfBorders, PdfPaddings } from './pdf-borders';\nimport { PdfBorderOverlapStyle } from './../../tables/light-tables/enum';\n/**\n * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\nexport { PdfGridStyleBase };\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @class */ (function (_super) {\n __extends(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\nexport { PdfGridStyle };\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @class */ (function (_super) {\n __extends(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\nexport { PdfGridCellStyle };\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @class */ (function () {\n // public setBackgroundImage(value : PdfImage) : void {\n // this.gridRowBackgroundImage = value;\n // if (typeof this.parent !== 'undefined') {\n // for (let i : number = 0; i < this.parent.cells.count; i++) {\n // this.parent.cells.getCell(i).style.backgroundImage = value;\n // }\n // }\n // }\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridRowStyle;\n}());\nexport { PdfGridRowStyle };\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nexport var PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n","/**\n * ElementLayouter.ts class for EJ2-PDF\n */\nimport { RectangleF } from './../../../drawing/pdf-drawing';\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nexport { ElementLayouter };\nvar PdfLayoutFormat = /** @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nexport { PdfLayoutFormat };\nvar PdfLayoutParams = /** @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nexport { PdfLayoutParams };\nvar PdfLayoutResult = /** @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\nexport { PdfLayoutResult };\n","import { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutParams, PdfLayoutFormat } from './base/element-layouter';\nimport { PdfBorders } from './../../structured-elements/grid/styles/pdf-borders';\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\nexport { PdfLayoutElement };\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 * TextLayouter.ts class for EJ2-PDF\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, SizeF } from './../../../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../../fonts/string-layouter';\nimport { PdfLayoutBreakType } from './../../figures/enum';\nimport { PdfColor } from './../../pdf-color';\nimport { PdfTextWebLink } from './../../../annotations/pdf-text-web-link';\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @class */ (function (_super) {\n __extends(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nexport { TextLayouter };\nvar TextPageLayoutResult = /** @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nexport { TextPageLayoutResult };\nvar PdfTextLayoutResult = /** @class */ (function (_super) {\n __extends(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\nexport { PdfTextLayoutResult };\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 * PdfTextElement.ts class for EJ2-PDF\n */\nimport { PdfLayoutElement } from './../figures/layout-element';\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfFont } from './../fonts/pdf-font';\nimport { PdfStandardFont } from './../fonts/pdf-standard-font';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutParams } from './../figures/base/element-layouter';\nimport { TextLayouter } from './base/text-layouter';\nimport { PdfSolidBrush } from './../brushes/pdf-solid-brush';\nimport { PdfColor } from './../pdf-color';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutFormat } from './base/element-layouter';\nimport { PdfStringLayouter } from './../fonts/string-layouter';\nimport { PdfTextAlignment } from './../enum';\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @class */ (function (_super) {\n __extends(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\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 the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\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 the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n var previousPage = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\nexport { PdfTextElement };\n","import { PdfColor } from './../graphics/pdf-color';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfDictionary, SaveAnnotationEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfString } from './../primitives/pdf-string';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfSolidBrush } from './../graphics/brushes/pdf-solid-brush';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStringFormat } from './../graphics/fonts/pdf-string-format';\nimport { PdfTextAlignment } from './../graphics/enum';\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\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(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\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 { PdfAnnotation } from './annotation';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfLinkAnnotation };\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 { PdfLinkAnnotation } from './link-annotation';\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfActionLinkAnnotation };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\nexport { PdfAction };\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 { PdfAction } from './action';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @class */ (function (_super) {\n __extends(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\nexport { PdfUriAction };\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 { PdfActionLinkAnnotation } from './action-link-annotation';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfUriAction } from './../actions/uri-action';\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\nexport { PdfUriAnnotation };\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 { PdfPage } from './../pages/pdf-page';\nimport { PointF, RectangleF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTextElement } from './../graphics/figures/text-element';\nimport { PdfUriAnnotation } from './uri-annotation';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfFontStyle } from './../graphics/fonts/enum';\nimport { PdfTextAlignment } from './../graphics/enum';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\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 the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @class */ (function (_super) {\n __extends(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\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 the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\nexport { PdfTextWebLink };\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 { PdfGrid } from '../pdf-grid';\nimport { PdfStringFormat } from './../../../graphics/fonts/pdf-string-format';\nimport { SizeF, RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfBorders } from '../styles/pdf-borders';\nimport { PdfLayoutType, PdfLayoutBreakType } from './../../../graphics/figures/enum';\nimport { PdfLayoutResult, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';\nimport { PdfHorizontalOverflowType } from '../styles/style';\nimport { TemporaryDictionary } from './../../../collections/object-object-pair/dictionary';\n/**\n * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @class */ (function (_super) {\n __extends(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\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 return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n this.Grid.measureColumnsWidth(this.currentBounds);\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n // if (headerHeight === this.currentBounds.y) {\n // drawHeader = true;\n // if (PdfGrid.repeatRowIndex === -1) {\n // PdfGrid.repeatRowIndex = this.rows.getRow.indexOf(row);\n // }\n // } else {\n drawHeader = false;\n // }\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var startingHeight = 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n startingHeight = originalHeight;\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = true;\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n var isAddNextPage = false;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex))\n break;*/\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var secion = this.currentPage.section;\n var startIndex = secion.indexOf(startPage) + 1;\n var endIndex = secion.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = this.currentPage.graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n // if (cell.columnSpan > 1)\n // {\n // for (; c < cell.columnSpan; c++)\n // cellWidth += row.grid.columns.getColumn(c).width;\n // }\n // else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n // if ((format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n // && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n // this.currentBounds.x = format.paginateBounds.x;\n // this.currentBounds.y = format.paginateBounds.y;\n // this.currentBounds.height = format.paginateBounds.height;\n // }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n var count = 0;\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = args.cancel;\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var location_3 = new PointF(0, 0);\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (this.Grid.isChildGrid && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n if (this.Grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // result.isFinish = false;\n // this.drawRow(row, result, calculatedHeight);\n // }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n // if (!cancelSpans) {\n // for (let k : number = 1; k < row.cells.getCell(i).columnSpan; k++) {\n // row.cells.getCell(i + k).isCellMergeContinue = true;\n // }\n //}\n var size = new SizeF(this.Grid.columns.getColumn(i).width, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null) {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n if (row.grid.isChildGrid) {\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\nexport { PdfGridLayouter };\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @class */ (function (_super) {\n __extends(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\nexport { PdfGridLayoutResult };\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @class */ (function (_super) {\n __extends(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nexport { PdfGridLayoutFormat };\nvar GridCellEventArgs = /** @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nexport { GridCellEventArgs };\nvar PdfGridBeginCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridBeginCellDrawEventArgs };\nvar PdfGridEndCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridEndCellDrawEventArgs };\nvar PdfCancelEventArgs = /** @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nexport { PdfCancelEventArgs };\nvar BeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { BeginPageLayoutEventArgs };\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { EndPageLayoutEventArgs };\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\nexport { PdfGridBeginPageLayoutEventArgs };\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nexport { PdfGridEndPageLayoutEventArgs };\nvar RowLayoutResult = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\nexport { RowLayoutResult };\n","import { PdfGrid } from './pdf-grid';\nimport { PdfGridCellStyle } from './styles/style';\nimport { PdfStringLayouter } from './../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\nimport { RectangleF, PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfDashStyle, PdfLineCap } from './../../graphics/enum';\nimport { PdfBorderOverlapStyle } from './../tables/light-tables/enum';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfImage } from './../../graphics/images/pdf-image';\nimport { PdfBitmap } from './../../graphics/images/pdf-bitmap';\nimport { PdfTextWebLink } from './../../annotations/pdf-text-web-link';\nimport { PdfLayoutType } from './../../graphics/figures/enum';\nimport { PdfGridLayouter, PdfGridLayoutFormat } from './../../structured-elements/grid/layout/grid-layouter';\nimport { PdfLayoutParams } from '../../../implementation/graphics/figures/base/element-layouter';\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var isrowbreak = false;\n /*if (!this.row.grid.isSingleGrid)\n {\n //Check whether the Grid Span to Nextpage\n if ((this.remainingString != null) || (PdfGridLayouter.repeatRowIndex != -1))\n {\n this.DrawParentCells(graphics, bounds, true);\n }\n else if (this.row.grid.rows.count > 1)\n {\n for (let i : number = 0; i < this.row.grid.rows.count; i++)\n {\n if (this.row == this.row.grid.rows.getRow(i))\n {\n if (this.row.grid.rows.getRow(i).rowBreakHeight > 0)\n isrowbreak = true;\n if ((i > 0) && (isrowbreak))\n this.DrawParentCells(graphics, bounds, false);\n }\n }\n }\n } */\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255)as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n var max = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\nexport { PdfGridCell };\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\nexport { PdfGridCellCollection };\n","import { PdfGridCell } from './pdf-grid-cell';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\nexport { PdfGridColumn };\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var summ = 0.0;\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\nexport { PdfGridColumnCollection };\n","import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';\nimport { PdfGridRowStyle } from './styles/style';\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n this.grid.rows.getRow(rowin + j + 1).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\nexport { PdfGridRow };\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\nexport { PdfGridRowCollection };\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\nexport { PdfGridHeaderCollection };\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 * PdfGrid.ts class for EJ2-PDF\n */\nimport { PdfGridColumnCollection } from './pdf-grid-column';\nimport { PdfGridRowCollection, PdfGridHeaderCollection } from './pdf-grid-row';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutElement } from './../../graphics/figures/layout-element';\nimport { PdfLayoutFormat } from './../../graphics/figures/base/element-layouter';\nimport { PdfGridStyle } from './styles/style';\nimport { PdfBorders } from './styles/pdf-borders';\nimport { PdfGridLayouter } from './../../structured-elements/grid/layout/grid-layouter';\nvar PdfGrid = /** @class */ (function (_super) {\n __extends(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\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","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\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 return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\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 { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\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 { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\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 * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\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 * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\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 * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\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 * PdfTrueTypeFont.ts class for EJ2-PDF\n */\nimport { UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { PdfFont } from './pdf-font';\nimport { PdfFontStyle } from './enum';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfTextDirection } from './../enum';\nimport { RtlRenderer } from './rtl-renderer';\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\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 * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\n","import * as events from '../base/constant';\nimport { PdfDocument, PdfGrid, PdfBorders, PdfPen, PdfPaddings } from '@syncfusion/ej2-pdf-export';\nimport { PdfStandardFont, PdfFontFamily, PdfFontStyle, PdfBitmap } from '@syncfusion/ej2-pdf-export';\nimport { PdfStringFormat, PdfTextAlignment, PdfColor, PdfSolidBrush, PdfTextWebLink } from '@syncfusion/ej2-pdf-export';\nimport { PdfVerticalAlignment, RectangleF, PdfPageTemplateElement } from '@syncfusion/ej2-pdf-export';\nimport { PointF, PdfPageNumberField, PdfCompositeField } from '@syncfusion/ej2-pdf-export';\nimport { PdfPageCountField, SizeF, PdfPageSettings, PdfPageOrientation } from '@syncfusion/ej2-pdf-export';\nimport { PdfTrueTypeFont } from '@syncfusion/ej2-pdf-export';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { Data } from '../actions/data';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { compile, getEnumValue, isNullOrUndefined, detach, isBlazor } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getValue } from '@syncfusion/ej2-base';\nimport { getUid, getPrintGridModel, measureColumnDepth, isExportColumns, updateColumnTypeForExportColumns, prepareColumns } from '../base/util';\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n * @hidden\n */\n function PdfExport(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n PdfExport.prototype.init = function (parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n };\n PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n var _this = this;\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n /**\n * Used to map the input data\n * @return {void}\n */\n PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n var query = new Query();\n if (parent.childGrid && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n var args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false\n };\n if (!isBlazor()) {\n var gridObject = 'gridObject';\n args[gridObject] = parent;\n }\n var can = 'cancel';\n var generateQuery = 'generateQuery';\n var header = 'headerPageNumbers';\n var drawPos = 'gridDrawPosition';\n parent.trigger(events.beforePdfExport, args);\n if (args[can] === true) {\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n if (args[generateQuery]) {\n query = ExportHelper.getQuery(parent, this.data);\n }\n this.headerOnPages = args[header];\n this.drawPosition = args[drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)\n && pdfExportProperties.dataSource instanceof DataManager) {\n return new Promise(function (resolve, reject) {\n pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {\n _this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise_1.push(this.helper.getColumnData(parent));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n _this.pdfDocument = pdfDoc;\n }\n else {\n _this.pdfDocument = new PdfDocument();\n }\n _this.processExport(parent, e[0], pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n });\n }\n };\n PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport) {\n var _this = this;\n var section = this.pdfDocument.sections.add();\n var pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n var pdfPage = section.pages.add();\n return new Promise(function (resolve, reject) {\n pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n // draw the grid\n var xPosition = 'xPosition';\n var yPosition = 'yPosition';\n pdfGrid.draw(pdfPage, _this.drawPosition[xPosition], _this.drawPosition[yPosition]);\n _this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!_this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n _this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n _this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n _this.blobPromise = _this.pdfDocument.save();\n }\n _this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n return _this.pdfDocument;\n });\n };\n PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n };\n PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {\n var allowHorizontalOverflow = true;\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n if (isBlazor() && !isNullOrUndefined(this.gridTheme)) {\n this.getGridPdfFont(this.gridTheme);\n }\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj);\n var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n var columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });\n var isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if (gObj.childGrid && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border = headerThemeStyle.border;\n var headerFont = headerThemeStyle.font;\n var headerBrush = headerThemeStyle.brush;\n var returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n var gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n var captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var sRows = void 0;\n var column = summaryModel.getColumns();\n column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false);\n }\n }\n else {\n var row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n };\n PdfExport.prototype.getSummaryCaptionThemeStyle = function () {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.caption);\n var pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n };\n PdfExport.prototype.getGridPdfFont = function (args) {\n var fontFamily = 'fontFamily';\n var fontSize = 'fontSize';\n var fontStyle = 'fontStyle';\n var isTrueType = 'isTrueType';\n var style = 0;\n if (args.header && args.header.font) {\n var headerFont = args.header.font[fontFamily];\n var headerSize = args.header.font[fontSize];\n var headerStyle = args.header.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[headerStyle]) ? 0 : PdfFontStyle[headerStyle]);\n if (args.header.font[isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n var fontFamily_1 = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n var captionFont = args.caption.font[fontFamily];\n var captionSize = args.caption.font[fontSize];\n var captionStyle = args.caption.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[captionStyle]) ? 0 : PdfFontStyle[captionStyle]);\n if (args.caption.font[isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n var fontFamily_2 = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n var recordFont = args.record.font[fontFamily];\n var recordSize = args.record.font[fontSize];\n var recordStyle = args.record.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[recordStyle]) ? 0 : PdfFontStyle[recordStyle]);\n if (args.record.font[isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n var fontFamily_3 = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);\n }\n }\n };\n PdfExport.prototype.getHeaderThemeStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.header);\n var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n var _this = this;\n var groupIndex = level;\n var _loop_1 = function (dataSourceItems) {\n var row = pdfGrid.rows.addRow();\n var col = gObj.getColumnByField(dataSourceItems.field);\n /* tslint:disable-next-line:no-any */\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn(),\n };\n /* tslint:disable-next-line:max-line-length */\n var value = this_1.parent.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n var cArgs = { captionText: value, type: 'PDF' };\n this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex + 1).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n var sRows;\n var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex);\n _this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex);\n index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n var isGroupedFooter = true;\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var dataSourceItems = dataSource_1[_i];\n _loop_1(dataSourceItems);\n }\n };\n PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n var _this = this;\n var columnCount = gridColumn.length + childLevels;\n var depth = measureColumnDepth(eCols);\n var cols = eCols;\n var index = 0;\n if (this.parent.allowGrouping) {\n index = this.parent.groupSettings.columns.length;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {\n var gridHeader = pdfGrid.headers.getHeader(rowIdx);\n var pdfCell = gridHeader.cells.getCell(colIdx);\n var cell = rows[rowIdx].cells[colIdx];\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n var args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n _this.parent.trigger(events.pdfHeaderQueryCellInfo, args);\n };\n var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {\n var cidx = 0;\n for (var i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (cols[i].columns && cols[i].columns.length) {\n var newSpanCnt = recuHeader(cols[i].columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex, cols[i], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[i].visible || _this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[i], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n };\n PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n var clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n /* tslint:disable-next-line:no-any */\n var footer = pdfExportProperties.footer;\n var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n var bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n if (!(pdfExportProperties.dataSource instanceof DataManager)) {\n dataSource = pdfExportProperties.dataSource;\n }\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n };\n PdfExport.prototype.drawHeader = function (pdfExportProperties) {\n var _this = this;\n var clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n /* tslint:disable-next-line:no-any */\n var header = pdfExportProperties.header;\n var position = new PointF(0, header.fromTop);\n var size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n var bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter(function (index) {\n if (index - 1 >= 0 && index - 1 < _this.pdfDocument.pages.count - 1) {\n _this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));\n }\n });\n }\n }\n };\n PdfExport.prototype.drawPageTemplate = function (template, element) {\n for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {\n var content = _a[_i];\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n /* tslint:disable-next-line:max-line-length */\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n };\n PdfExport.prototype.processContentValidation = function (content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.drawText = function (pageTemplate, content) {\n var font = this.getFont(content);\n var brush = this.getBrushFromContent(content);\n var pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n var penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var value = content.value.toString();\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var format = new PdfStringFormat();\n var result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.drawPageNumber = function (documentHeader, content) {\n var font = this.getFont(content);\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n var compositeField;\n var format;\n if (!isNullOrUndefined(content.format)) {\n if (content.format.indexOf('$total') !== -1 && content.format.indexOf('$current') !== -1) {\n var pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf('$total') > content.format.indexOf('$current')) {\n format = content.format.replace('$current', '0');\n format = format.replace('$total', '1');\n }\n else {\n format = content.format.replace('$current', '1');\n format = format.replace('$total', '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf('$current') !== -1 && content.format.indexOf('$total') === -1) {\n format = content.format.replace('$current', '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n var pageCount = new PdfPageCountField(font);\n format = content.format.replace('$total', '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.drawImage = function (documentHeader, content) {\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n var image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.drawLine = function (documentHeader, content) {\n var x1 = content.points.x1 * 0.75;\n var y1 = content.points.y1 * 0.75;\n var x2 = content.points.x2 * 0.75;\n var y2 = content.points.y2 * 0.75;\n var pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n };\n /* tslint:disable-next-line:no-any */ /* tslint:disable-next-line:max-line-length */ /* tslint:disable-next-line:max-func-body-length */\n PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter) {\n for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {\n var row = sRows_1[_i];\n var startIndex = 0;\n var leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n /* tslint:disable-next-line:no-any */\n var value = [];\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n var cell = row.cells[index];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n /* tslint:disable-next-line:max-line-length */\n var args = { row: row, type: 'GroupCaption', style: captionRow.cells };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n value.push('');\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[index];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[index];\n }\n }\n if (cell.isDataCell) {\n var templateFn = {};\n /* tslint:disable-next-line:max-line-length */\n if (!isNullOrUndefined(cell.column.footerTemplate) || !isNullOrUndefined(cell.column.groupCaptionTemplate) || !isNullOrUndefined(cell.column.groupFooterTemplate)) {\n /* tslint:disable-next-line:no-any */\n var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n var txt = void 0;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n value.push(txt[0].textContent);\n isEmpty = false;\n }\n else {\n /* tslint:disable-next-line:no-any */\n var result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[i] !== '' && !isNullOrUndefined(value[i]) && value[i] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (isCaption) {\n for (var i = (this.parent.groupSettings.columns.length) + 1; i < value.length - 1; i++) {\n value[i] = value[i + 1];\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n var gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n /* tslint:disable-next-line:max-line-length */\n var args = { row: row, type: isGroupedFooter ? 'GroupFooter' : 'Footer', style: gridRow.cells };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[i].toString();\n }\n }\n else {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[i].toString();\n if (i === (groupIndex + 1) && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = leastCaptionSummaryIndex - (groupIndex + 1);\n }\n else if (i === (groupIndex + 1) && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n }\n }\n }\n }\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.getTemplateFunction = function (templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.getSummaryWithoutTemplate = function (data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n };\n /**\n * Set alignment, width and type of the values of the column\n */\n PdfExport.prototype.setColumnProperties = function (gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n var startIndex = gObj.groupSettings.columns.length;\n for (var i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[i].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this.getHorizontalAlignment(gridColumns[i].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[i].width) && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[i].width === 'number' ?\n gridColumns[i].width * 0.75 : helper.getConvertedWidth(gridColumns[i].width) * 0.75;\n }\n }\n };\n /**\n * set default style properties of each rows in exporting grid\n * @private\n */\n PdfExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridTheme.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n var borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * generate the formatted cell values\n * @private\n */\n PdfExport.prototype.processRecord = function (border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n var rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n rowIndex++;\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cellLength = row.cells.length;\n for (var j = 0; j < cellLength; j++) {\n var gridCell = row.cells[j];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gridCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var foreignKeyData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData);\n }\n var data = row.data;\n var cell = gridRow.cells.getCell(j);\n var args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = this.exportValueFormatter.formatCellValue(args, gObj.isServerRendered);\n this.parent.trigger(events.pdfQueryCellInfo, args);\n if (!isNullOrUndefined(args.image)) {\n args.value = new PdfBitmap(args.image.base64);\n }\n cell.value = args.value;\n if (!isNullOrUndefined(args.hyperLink)) {\n // create the Text Web Link\n var textLink = new PdfTextWebLink();\n // set the hyperlink\n textLink.url = args.hyperLink.target;\n // set the link text\n textLink.text = args.hyperLink.displayText || args.hyperLink.target;\n // set the font\n textLink.font = new PdfStandardFont(PdfFontFamily.Helvetica, 9.75);\n // set the brush and pen for the text color\n textLink.brush = new PdfSolidBrush(new PdfColor(51, 102, 187));\n cell.value = textLink;\n }\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (var i = 1; i < cell.columnSpan; i++) {\n var spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n var gridRow_1 = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cell = gridRow_1.cells.getCell(startIndex);\n cell.columnSpan = gridRow_1.cells.count - (startIndex);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n var returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnValue.childGrid;\n var element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n var args = { childGrid: childGridObj, row: row, cell: cell, exportProperties: pdfExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n this.parent.notify(events.exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n };\n PdfExport.prototype.childGridCell = function (cell, childGridObj, pdfExportProperties) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = _this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return cell;\n };\n };\n PdfExport.prototype.processCellStyle = function (cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n var backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n var textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n var textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n var border = new PdfBorders();\n var borderWidth = args.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n var borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n };\n /**\n * set text alignment of each columns in exporting grid\n * @private\n */\n PdfExport.prototype.getHorizontalAlignment = function (textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n };\n /**\n * set vertical alignment of each columns in exporting grid\n * @private\n */\n PdfExport.prototype.getVerticalAlignment = function (verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n };\n PdfExport.prototype.getFontFamily = function (fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n /* tslint:disable-next-line:no-any */\n PdfExport.prototype.getFont = function (content) {\n if (content.font) {\n return content.font;\n }\n var fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PdfExport.prototype.getPageNumberStyle = function (pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n };\n PdfExport.prototype.setContentFormat = function (content, format) {\n if (!isNullOrUndefined(content.size)) {\n var width = content.size.width * 0.75;\n var height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n };\n PdfExport.prototype.getPageSize = function (pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n };\n PdfExport.prototype.getDashStyle = function (dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PdfExport.prototype.getPenFromContent = function (content) {\n var pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n var penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n };\n PdfExport.prototype.getBrushFromContent = function (content) {\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n };\n PdfExport.prototype.hexToRgb = function (hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n var bigint = parseInt(hex, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PdfExport.prototype.getFontStyle = function (theme) {\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n };\n PdfExport.prototype.getBorderStyle = function (border) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n var borderWidth = border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n var borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n };\n /**\n * To destroy the pdf export\n * @return {void}\n * @hidden\n */\n PdfExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil } from '../base/util';\n/**\n * FocusStrategy class\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function () {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n var added = 'addedRecords';\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[added].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus) {\n this.focus();\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid')))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = false;\n this.currentInfo.skipAction = false;\n if (this.getContent().getFocusInfo().elementToFocus) {\n this.getContent().getFocusInfo().elementToFocus.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.e-gridcontent'));\n var isHeader = !isNullOrUndefined(closest(e.target, '.e-gridheader'));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.e-frozencontent')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozenheader'));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader')) ||\n e.target.classList.contains('e-content') ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader'))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.skipOn(e)) {\n return;\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (returnVal === false) {\n this.clearIndicator();\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || (filterCell ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.e-gridcontent') === null && closest(target, '.e-gridheader') === null)\n || (e.action === 'space' && (!target.classList.contains('e-gridchkbox') && closest(target, '.e-gridchkbox') === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll) {\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /** @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /** @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /** @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject();\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === 'Left-Right') {\n var frRows = _this.parent.getFrozenRightRowsObject();\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging') {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.parent.on(event.keyPressed, this.onKeyPress, this);\n this.parent.on(event.click, this.onClick, this);\n this.parent.on(event.contentReady, this.refMatrix, this);\n this.parent.on(event.partialRefresh, this.refMatrix, this);\n this.parent.on(event.refreshExpandandCollapse, this.refMatrix, this);\n this.parent.on(event.headerRefreshed, this.refreshMatrix(), this);\n this.parent.on('close-edit', this.restoreFocus, this);\n this.parent.on('restore-Focus', this.restoreFocus, this);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.on(evts[i], this.clearIndicator, this);\n }\n this.parent.on('sorting-complete', this.restoreFocus, this);\n this.parent.on('filtering-complete', this.filterfocus, this);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction, this);\n }\n this.parent.on(event.batchAdd, this.refMatrix, this);\n this.parent.on(event.batchCancel, this.refMatrix, this);\n this.parent.on(event.batchDelete, this.refMatrix, this);\n this.parent.on(event.detailDataBound, this.refMatrix, this);\n this.parent.on(event.onEmpty, this.refMatrix, this);\n this.parent.on(event.cellFocused, this.internalCellFocus, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n this.parent.off(event.keyPressed, this.onKeyPress);\n this.parent.off(event.click, this.onClick);\n this.parent.off(event.contentReady, this.refMatrix);\n this.parent.off(event.partialRefresh, this.refMatrix);\n this.parent.off(event.refreshExpandandCollapse, this.refMatrix);\n this.parent.off(event.headerRefreshed, this.refreshMatrix());\n this.parent.off('close-edit', this.restoreFocus);\n this.parent.off('restore-focus', this.restoreFocus);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.off(evts[i], this.clearOutline);\n }\n this.parent.off('sorting-complete', this.restoreFocus);\n this.parent.off('filtering-complete', this.filterfocus);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction);\n }\n this.parent.off(event.batchAdd, this.refMatrix);\n this.parent.off(event.batchDelete, this.refMatrix);\n this.parent.off(event.batchCancel, this.refMatrix);\n this.parent.off(event.detailDataBound, this.refMatrix);\n this.parent.off(event.onEmpty, this.refMatrix);\n this.parent.off(event.cellFocused, this.internalCellFocus);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell') || e.parent.classList.contains('e-templatecell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[rowIndex] = this.matrix[rowIndex] || [];\n this.matrix[rowIndex][columnIndex] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[rowIndex])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[rowIndex].length - 1));\n if (tmp + navigator[1] > this.matrix[rowIndex].length - 1 && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[rowIndex], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[i].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current[0];\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[index])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[index]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[rowIndex].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[i].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n for (var j = 0; j < cells.length; j++) {\n this.set(i, j, rows[i].visible === false ? false : selector(rows[i], cells[j], isRowTemplate));\n }\n }\n return this.matrix;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if ((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString()) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[rowIndex].cells[cellIndex];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[rowIndex].querySelectorAll('.e-indentcell').length +\n this.getTable().rows[rowIndex].querySelectorAll('.e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains('e-rowcell') && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n target = (target.classList.contains('e-rowcell') ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains('e-table') ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, 'e-rowcell') && !parentsUntil(e.target, 'e-groupcaption'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[rowIndex]) ? this.getTable().rows[rowIndex].cells[cellIndex] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1)\n || (cell.column && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i < len; i++) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0);\n var right = ((action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns);\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n if (action === 'tab' && !this.parent.isEdit &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (action === 'shiftTab' && !this.parent.isEdit &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains('e-row')) {\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right' && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains('e-rowcell');\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute('aria-rowindex'), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute('aria-colindex'), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[rowIndex])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[rowIndex].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[rowIndex].cells[0].querySelectorAll('td')[cellIndex];\n }\n else {\n cell = table.rows[rowIndex].cells[cellIndex];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains('e-rowcell');\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains('e-rowcell')) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains('e-rowcell') && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return !isBlazor() && this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains('e-rowcell') ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[rowIndex].cells[cellIndex];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template))) ||\n cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && current[1] === 0;\n var right = (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && current[1] === this.matrix.columns;\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right'\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n for (var i = 0; i < cells.length; i++) {\n this.matrix.set(length, i, cells[i].visible && cells[i].column.allowFiltering !== false);\n }\n }\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0);\n return { swap: swap, toHeader: toHeader, toFrozen: toHeader };\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow') && current[1] === this.matrix.columns),\n toHeader: toHeader,\n toFrozen: toHeader\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frSwap, toFrozen: toFrozen };\n }\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns && isPresent),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns,\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n /** @hidden */\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n };\n SearchBox.prototype.searchBlur = function (args) {\n args.target.parentElement.classList.remove('e-input-focus');\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0),\n toHeader: toHeader,\n toFrozenRight: toHeader\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frozenSwap, toFrozenRight: toFrozen };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = 0;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\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 { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n Popup.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 setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n */\n Popup.prototype.destroy = function () {\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n */\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n this.element.appendChild(this.content);\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var display = this.element.style.display;\n var parentDisplay = void 0;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY) {\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n * @param { AnimationModel | Function } collisionOrAnimationOptions? - To pass animation options or collision function.\n * @param { Function } collision? - To pass the collision function.\n * @param { HTMLElement } relativeElement? - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n * @param { AnimationModel } animationOptions? - To give the animation options.\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @private\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n //Body direct children element traversal\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n // Checking the max-zindex value\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportdetaildatabound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var setCustomFilterHeader = 'set-custom-filter-header';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshVirtualCacheOnRowDD = 'refresh-Virtual-Cache-On-RowDD';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n","import { Droppable, isBlazor, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate, removeClass } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { getScrollBarWidth, isGroupAdaptive } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n this.mutableData = false;\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && _this.parent.enableVirtualization) {\n var mContentRows = [].slice.call(_this.parent.getMovableVirtualContent().querySelectorAll('.e-row'));\n var fContentRows = [].slice.call(_this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n _this.isLoaded = !mContentRows ? false : mContentRows.length === fContentRows.length;\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().querySelectorAll('.e-row'));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().querySelectorAll('.e-row'));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.e-content'), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.isLoaded) {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.mutableData = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.e-gridcontent');\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.e-content'), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: 'e-gridcontent' });\n var innerDiv = this.parent.createElement('div', {\n className: 'e-content'\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)\n && (!isBlazor() || (isBlazor() && !this.parent.isServerRendered))) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.e-table'));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n * @return {Element}\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (!isBlazor()) {\n if (this.getTable()) {\n remove(this.getTable());\n }\n }\n var table = innerDiv.querySelector('.e-table') ? innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement('tbody'));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n this.rowElements = [];\n this.rows = [];\n var fCont = this.getPanel().querySelector('.e-frozencontent');\n var mCont = this.getPanel().querySelector('.e-movablecontent');\n var cont = this.getPanel().querySelector('.e-content');\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n modelData = this.generator.generateRows(dataSource, args);\n if (this.parent.enableVirtualization) {\n this.prevInfo = this.prevInfo ? this.prevInfo : args.virtualInfo;\n this.prevInfo = args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== args.virtualInfo.page ? this.currentInfo : args.virtualInfo;\n }\n this.rows = modelData;\n this.freezeRows = modelData;\n this.rowElements = [].slice.call(this.getTable().querySelectorAll('tr.e-row[data-uid]'));\n if (frzCols) {\n this.movableRows = modelData.map(function (mRow) {\n var sRow = new Row(mRow);\n sRow.cells = mRow.cells.slice(frzCols, mRow.cells.length);\n mRow.cells = mRow.cells.slice(0, frzCols);\n return sRow;\n });\n this.freezeRowElements = this.rowElements;\n }\n this.isLoaded = true;\n this.parent.hideSpinner();\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n var arg = extend({ rows: this.rows }, args);\n if (this.getTable().querySelector('.e-emptyrow')) {\n remove(this.getTable().querySelector('.e-emptyrow'));\n if (!isNullOrUndefined(this.getTable().querySelectorAll('.e-table > tbody')[1])) {\n remove(this.getTable().querySelectorAll('.e-table > tbody')[1]);\n }\n }\n this.parent.notify('contentcolgroup', {});\n this.rafCallback(arg)();\n if (frzCols) {\n cont.style.overflowY = 'hidden';\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n this.parent.notify(events.contentReady, { rows: this.movableRows, args: extend({}, arg, { isFrozen: false }) });\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection && !this.parent.enableVirtualization)) {\n var rowIndex = 'editRowIndex';\n if (this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(args[rowIndex])) {\n this.parent.selectRow(args[rowIndex]);\n }\n }\n if (this.parent.enableVirtualization && !this.parent.getHeaderContent().querySelectorAll('.e-check').length) {\n var removeClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected'); })\n .map(function (y) { return y.getAttribute('data-uid'); });\n var addClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected') === null; })\n .map(function (y) { return y.getAttribute('data-uid'); });\n for (var i = 0; i < removeClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(removeClassByUid[i])) &&\n !this.parent.getRowObjectFromUID(removeClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(removeClassByUid[i]).removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check'))) {\n removeClass([this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(removeClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(removeClassByUid[i])\n .children[j].classList.remove('e-selectionbackground', 'e-active');\n }\n }\n }\n for (var i = 0; i < addClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(addClassByUid[i]))\n && this.parent.getRowObjectFromUID(addClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(addClassByUid[i]).setAttribute('aria-selected', 'true');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame'))) {\n addClass([this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(addClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(addClassByUid[i])\n .children[j].classList.add('e-selectionbackground', 'e-active');\n }\n }\n }\n }\n return;\n }\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === 'Left-Right' && tableName === 'frozen-right';\n /* tslint:disable:no-any */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* tslint:enable:no-any */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if (this.parent.isReact && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n this.parent.destroyTemplate(['columnTemplate', 'rowTemplate', 'detailTemplate', 'captionTemplate', 'commandsTemplate']);\n this.parent.renderTemplates();\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector('tbody');\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[m]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m * bSize);\n break;\n }\n else {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m) * bSize;\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[i].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n this.rows.push(modelData[i]);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.setRowsInLazyGroup(modelData[i], i);\n if (isNullOrUndefined(modelData[i].indent)) {\n continue;\n }\n }\n this.setInfiniteVisibleRows(args, modelData[i], tableName);\n if (isGroupAdaptive(gObj) && this.rows.length >= (gObj.pageSettings.pageSize) && blockLoad) {\n break;\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[i], columns);\n var isVFreorder = this.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[i].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[i]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n gObj.renderTemplates();\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[i]), gObj, 'rowTemplate', rowTemplateID);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[j].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[j].querySelectorAll && elements[j].querySelectorAll('tr').length)) {\n tr = isTR ? elements[j] : elements[j].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[i].data, row: trElement ? trElement : tr };\n this.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[i].isDataRow) {\n this.rowElements.push(tr);\n }\n this.ariaService.setOptions(this.getTable(), { colcount: gObj.getColumns().length.toString() });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector('tbody');\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n if (!isBlazor() || this.parent.isJsComponent) {\n args.rows = this.rows.slice(0);\n }\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(tbdy);\n tbdy = _this.parent.createElement('tbody');\n }\n else {\n remove(_this.tbody);\n _this.tbody = _this.parent.createElement('tbody');\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector('tbody');\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector('tbody'), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector('tbody'), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'frozen-right'))\n || (gObj.getFrozenMode() === 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.contentModule.maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings.currentPage][index].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][index];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length &&\n (args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && this.parent.contentModule.getGroupCache()[this.parent.pageSettings.currentPage]) {\n this.useGroupCache = true;\n return this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === 'frozen-left' || (this.parent.getFrozenMode() === 'Right' && tableName === 'frozen-right')) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute('aria-rowindex'), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10);\n var last = Math.ceil(index / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i][idx]\n : data.concat(this.infiniteCache[i][idx]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][idx].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i] : data.concat(this.infiniteCache[i]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[i]]) : rows.concat(this.infiniteCache[keys[i]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n * @return {Element}\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n * @param {Element} panel\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n * @return {Element}\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n * @param {Element} table\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Row collection in the Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n * @param {Column[]} columns?\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n if (isBlazor() && gObj.isServerRendered) {\n this.parent.notify('setvisibility', columns);\n }\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === 'Left-Right') {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[i].cells.length;\n var rightLen = rightRows.length ? rightRows[i].cells.length : 0;\n row = fRows[i].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[i].cells[j]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[i].cells[k]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var element;\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var tasks = [];\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === 'frozen-right') {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('colgroup');\n setStyleAttribute(colG.childNodes[idx], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('colgroup');\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[idx], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[i]].querySelectorAll('td.e-rowcell')[idx];\n if (tr[trs[i]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[i]].querySelectorAll('td.e-rowcell')[idx], { 'display': displayVal });\n if (tr[trs[i]].querySelectorAll('td.e-rowcell')[idx].classList.contains('e-hide')) {\n removeClass([tr[trs[i]].querySelectorAll('td.e-rowcell')[idx]], ['e-hide']);\n }\n if (this.parent.isRowDragable()) {\n var index = this.parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[i]].cells[index].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[i]].cells[idx].visible = displayVal === '' ? true : false;\n }\n }\n }\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return isBlazor() ? this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true) :\n this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2) \n row.cells[index].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n if (isBlazor() && !this.parent.isJsComponent && this.parent.frozenRows) {\n return;\n }\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('tbody').innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[i].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[j].isSelected = set;\n var cells = row[j].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[k].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getDataRows()[index];\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[idx].getAttribute('aria-rowindex'), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getMovableDataRows()[index];\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /** @hidden */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement('tbody');\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector('tbody').children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[i][key]] = oldKeys[this.prevCurrentView[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldKeys[this.prevCurrentView[i][key]] = i;\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[i][key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.mutableData) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[i], dataSource[i]);\n }\n var tr = oldRowElements[oldRowObjs[oldIndex].uid];\n newRowObjs.push(oldRowObjs[oldIndex]);\n if (this.rowElements[i] && this.rowElements[i].getAttribute('data-uid') === newRowObjs[i].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!hasBatch && (isEqual || this.prevCurrentView[i] === dataSource[i])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!this.mutableData && dataSource[i] !== this.prevCurrentView[oldIndex])\n || (this.mutableData && !isEqual)) {\n oldRowObjs[oldIndex].setRowValue(dataSource[i]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var modelData = this.generator.generateRows([dataSource[i]]);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector('tbody'));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n /** @hidden */\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== next[keys[i]]) {\n isEqual = false;\n break;\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[i][primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n row.isAltRow ? tr.classList.add('e-altrow') : tr.classList.remove('e-altrow');\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute('aria-rowindex', index.toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[i].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.getGroupedRecords(0, data[i], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var isRenderCaption = this.isInfiniteScroll && this.prevKey === data.key;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[j], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (!isRenderCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[i].isCaptionRow) {\n this.rows[i].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[i].isCaptionRow && !this.rows[i].isDataRow) {\n break;\n }\n }\n }\n }\n this.prevKey = data.key;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here. \n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /** @hidden */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var tmp = [];\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[records]) ? data.items[records].length : data.items.length;\n options.uid = isBlazor() && this.parent.isServerRendered ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /** @hidden */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[i] = this.generateRow(data[i], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[i].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[i].isDataRow) {\n input[i].cells = this.generateCells(input[i]);\n for (var j = 0; j < input[i].indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(input[i].indent) === -1) {\n continue;\n }\n input[i].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[i].data, input[i].indent);\n input[i].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[j];\n if (row.uid === childRow.parentUid) {\n this.rows[j].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// tslint:disable-next-line\nvar proxy;\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// tslint:disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var containerRectValues;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) < maxWidth\n || (targetRectValues.right - containerRectValues.left) > targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /**\n * Constructor for creating the widget\n * @hidden\n */\n function Dialog(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = this.minHeight.toString();\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n ;\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.hide(event);\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n if (this.showCloseIcon) {\n this.renderCloseIcon();\n }\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && typeof (this.buttons[i].click) === 'function' && footerBtn.length > 0) {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n this.btnObj[i].element.classList.add('e-flat');\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.setContent = function () {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = this.sanitizeHelper(template);\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /**\n * @hidden\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\!?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msMatchesSelector : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n * @private\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons':\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.zIndex = getZindexPartial(zIndexElement);\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n * @method destroy\n * @return {void}\n * @memberof dialog\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n * @return {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @return {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n * @return {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n !isNullOrUndefined(_this.targetEle) ? removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]) :\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n if (args) {\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n * @param { number } index - Index of the button.\n * @return {Button}\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n function alert(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n function confirm(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n return options;\n }\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, isBlazor, Browser, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n * @param {Object} target\n * @param {string} checkFor\n * @returns no\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n /* tslint:disable:no-any */\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n * @param {string} field\n * @param {Object} data\n * @param {IColumn} column\n * @hidden\n */\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n * @param {string} field\n * @param {IColumn} column\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n * @param {Function} fn - Function that contains the actual action\n * @return {Promise}\n * @hidden\n */\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[i].columns) {\n for (var j = 0; j < gridColumns[i].columns.length; j++) {\n exportColumns[i].columns[j].type = gridColumns[i].columns[j].type;\n }\n }\n else {\n exportColumns[i].type = gridColumns[i].type;\n }\n }\n }\n}\n/**\n * @hidden\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n }\n else if (!actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n if (!actualRows[i].isExpand && actualRows[i].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[i], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\n/**\n * @hidden\n */\nvar count = 0;\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[agrCnt]) && val[agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[agrCnt])) :\n (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[agrCnt])) + val[agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[gSummary] * (gLen - val.indent)) + val[agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[items].length; i < len; i++) {\n var gLevel = val.data[items][i];\n count += gLevel[items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[items][records]) ? gLevel[items][records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[items][records]) && !isNullOrUndefined(val[agrCnt])) ? gLevel[items][records].length :\n gLevel[items].length;\n if (gLevel[items].GroupGuid && gLevel[items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[items].length;\n if (!isNullOrUndefined(val[agrCnt])) {\n if (val[agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[agrCnt]) + val[agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[items].length; j < length_1; j++) {\n var nLevel = row[items][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/** @hidden */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/** @hidden */\nexport function templateCompiler(template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/** @hidden */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/** @hidden */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/** @hidden */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[i].columns) {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n ind = setColumnIndex(columnModel[i].columns, ind);\n }\n else {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n }\n }\n return ind;\n}\n/** @hidden */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[c] === 'string') {\n column = new Column({ field: columns[c] }, gObj);\n }\n else if (!(columns[c] instanceof Column)) {\n if (!columns[c].columns) {\n column = new Column(columns[c], gObj);\n }\n else {\n columns[c].columns = prepareColumns(columns[c].columns, null, gObj);\n column = new Column(columns[c], gObj);\n }\n }\n else {\n column = columns[c];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[c] = column;\n }\n return columns;\n}\n/** @hidden */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n var isBottomTail;\n popUpSpan.className = className;\n popUp.style.display = '';\n isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/** @hidden */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/** @hidden */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/** @hidden */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/** @hidden */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/** @hidden */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/** @hidden */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/** @hidden */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[i]);\n }\n}\n/** @hidden */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/** @hidden */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/** @hidden */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/** @hidden */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/** @hidden */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/** @hidden */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/** @hidden */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/** @hidden */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/** @hidden */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/** @hidden */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/** @hidden */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, 'e-row');\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/** @hidden */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/** @hidden */\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n action ? elem[i].classList.add(clName) : elem[i].classList.remove(clName);\n }\n}\n/** @hidden */\nexport function setFormatter(serviceLocator, column, isServerRendered) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if (isBlazor() && isServerRendered) {\n var isServer = 'isServerRendered';\n args[isServer] = isServerRendered;\n }\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/** @hidden */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[i], args.slice(), []);\n cells[i].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[i], [], args.slice());\n cells[i].removeAttribute('aria-selected');\n }\n }\n}\n/** @hidden */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/** @hidden */\nexport function getFilterMenuPostion(target, dialogObj, grid) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos;\n newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/** @hidden */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/** @hidden */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/** @hidden */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/** @hidden */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/** @hidden */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n * @param row - Grid Row model object.\n * @param columns - Foreign columns array.\n * @param data - Updated Row data.\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[i].field, getForeignData(columns[i], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[i].column.field, row.foreignKeyData), cells[i]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n * @param column - Foreign Key column\n * @param data - Row data.\n * @param lValue - cell value.\n * @param foreignData - foreign data source.\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n * @param foreignKeyValue - Defines ForeignKeyValue.\n * @param columns - Array of column object.\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @hidden\n * @param filterObject - Defines predicate model object\n */\nexport function getDatePredicate(filterObject, type) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value)) {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @hidden\n */\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n }\n}\n/**\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'date', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'dateTime', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[index] = {};\n obj[index].isExpand = true;\n obj[index].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[index].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[key] = getActualProperties(gObj[key]);\n }\n }\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n if (!arguments[i]) {\n continue;\n }\n var obj1 = arguments[i];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[i_1]];\n var cpy = obj1[keys[i_1]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[i_1]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[i_1]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[i_1]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[i] = checkDepth(col.columns[i], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[j]) {\n max = indices[j];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n }\n}\n/** @hidden */\nexport var Global;\n(function (Global) {\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/** @hidden */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/** @hidden */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.e-row').getBoundingClientRect().height;\n var fHeight = closest(fTD, '.e-row').getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/** @hidden */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/** @hidden */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/** @hidden */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/** @hidden */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/** @hidden */\nexport function eventPromise(args, query) {\n var state;\n state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/** @hidden */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/** @hidden */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[i].width)) {\n undefinedWidthCol++;\n }\n else if (columns[i].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) && Browser.info.name !== 'chrome'\n && !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/** @hidden */\nexport function resetRowIndex(gObj, rows, rowElms, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDataRow) {\n rows[i].index = startIndex;\n rows[i].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[i].setAttribute('aria-rowindex', startIndex.toString());\n rows[i].isAltRow ? rowElms[i].classList.add('e-altrow') : rowElms[i].classList.remove('e-altrow');\n for (var j = 0; j < rowElms[i].cells.length; j++) {\n rowElms[i].cells[j].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/** @hidden */\nexport function resetRowObjectIndex(gObj, rows, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n rows[i].index = startIndex;\n startIndex++;\n }\n}\n/** @hidden */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[type].concat(changes[type]).reduce(function (r, o) {\n r[o[keyField]] = r[o[keyField]] === undefined ? o : Object.assign(r[o[keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[type] = Object.keys(newArray).map(function (k) { return newArray[k]; });\n}\n/** @hidden */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === 'Left-Right' ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === 'Left-Right') {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/** @hidden */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === 'frozen-left') {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === 'frozen-right') {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n rowObj ? callBack('frozen-left', rows[0], rowObj[0]) : callBack('frozen-left', rows[0]);\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n rowObj ? callBack('movable', rows[1], rowObj[1]) : callBack('movable', rows[1]);\n }\n if ((gObj.getFrozenMode() === 'Left-Right' || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n rowObj ? callBack('frozen-right', rows[2], rowObj[2]) : callBack('frozen-right', rows[2]);\n }\n}\n/** @hidden */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/** @hidden */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/** @hidden */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[k]);\n k--;\n }\n}\n/** @hidden */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n return [].slice.call(gObj.getFrozenRightDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else {\n return [].slice.call(gObj.getDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n}\n/** @hidden */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === 'frozen-right'\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[index];\n}\n/** @hidden */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len) {\n if (col.getFreezeTableName() === 'frozen-left' || (!index && col.getFreezeTableName() === 'frozen-right') || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n}\n/** @hidden */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/** @hidden */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === 'Left-Right') {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/** @hidden */\nexport function getNumberFormat(numberFormat, type, isExcel) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n return mtch_1[pattern];\n });\n }\n return format;\n}\n/** @hidden */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[i].classList.add('e-bigger');\n }\n }\n}\n/** @hidden */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\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 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 { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var colSpan = row.cells[i].cellSpan ? row.cells[i].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !this.parent.getRowsObject()[row.index - 1].isDataRow ? this.parent.getRowsObject()[row.index].cells :\n this.parent.getRowsObject()[row.index - 1].cells;\n var targetCell_1 = row.cells[i];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[j].visible === false) {\n visible++;\n }\n else {\n row.cells[j].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[j].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[i].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[i].spanText;\n td = cellRenderer.render(row.cells[i], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[i].isRowSpanned = true;\n row.cells[i].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[i].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[i].isSpanned = true;\n row.cells[i].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[i].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[i].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[i];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[startIndex]) {\n options.isExpand = gObj.expandedRows[startIndex].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[i].dataSource) ?\n new DataManager(fColumns[i].dataSource.result) :\n fColumns[i].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[j].field] = e[j].result;\n }\n // tslint:disable-next-line:no-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[i] = new Row({});\n rows[i].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].commands) {\n rows = this.appendGridCells(columns[i], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[i].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[i], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[i].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[i], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n // tslint:disable-next-line:no-any\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[exportId] = false;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n /* tslint:disable-next-line:no-any */\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /* tslint:disable-next-line:no-any */\n ExportValueFormatter.prototype.formatCellValue = function (args, isServerBlaz) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat({ format: args.column.format })(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date') {\n format = isServerBlaz ? { type: 'date', format: cFormat } : { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = isServerBlaz ? { type: 'time', format: cFormat } : { type: 'time', skeleton: cFormat };\n }\n else {\n format = isServerBlaz ? { type: 'dateTime', format: cFormat } : { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n var customFormat = void 0;\n if (args.column.type === 'date') {\n /* tslint:disable-next-line:max-line-length */\n customFormat = { type: args.column.format.type, format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n * @param options - Specifies HScroll model properties as options.\n * @param element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n * @private\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var nav = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var navEle = this.createElement('div', { id: id.concat('_left'), className: clsLeft + ' ' + CLS_DISABLE });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var element = this.scrollEle;\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n var scrlLeft = element.scrollLeft;\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance;\n distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {HScrollModel} newProp\n * @param {HScrollModel} oldProp\n * @returns void\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n * @param options - Specifies VScroll model properties as options.\n * @param element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n * @private\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflowY = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () { timeoutFun_1(); }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () { timeoutFun(); }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootElement = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance;\n distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var rootEle = this.element;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {VScrollModel} newProp\n * @param {VScrollModel} oldProp\n * @returns void\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n * @param options - Specifies Toolbar model properties as options.\n * @param element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end',\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'aria-haspopup', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n };\n /**\n * Initialize the event handler\n * @private\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.element.setAttribute('tabIndex', '0');\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n }\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n // tslint:disable-next-line:max-line-length\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n var ele = void 0;\n var nodes = void 0;\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n this.element.removeAttribute('tabindex');\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var clst;\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns void.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n value ? rootEle.classList.add(CLS_DISABLE) : rootEle.classList.remove(CLS_DISABLE);\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n // tslint:disable-next-line:max-line-length\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n // tslint:enable-next-line:max-line-length\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var clsList = trgt.classList;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n ;\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false', 'aria-haspopup': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical',\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[i], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n var portals = 'portals';\n // tslint:disable-next-line:no-any\n this.notify('render-react-toolbar-template', this[portals]);\n this.renderReactTemplates();\n }\n };\n /** @hidden */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n * @returns void.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('role', 'list');\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var eleInlineItem;\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[index]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[i];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var eleHeight;\n var eleItem;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS)) {\n ele = element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n this.element.setAttribute('aria-haspopup', 'true');\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n };\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[i];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n popObj.refreshPosition();\n }\n };\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[i]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'list');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n ele.setAttribute('aria-haspopup', 'false');\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var checkOverflow;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[index].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns void.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE) : addClass(elements, CLS_DISABLE);\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[index]) {\n return this.tbarEle[index];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n * @param {ItemsModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns void.\n\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns void.\n\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var indexAgn = void 0;\n indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(innerItems[index]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n var e = void 0;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var innerEle;\n var dom;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', '-1');\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', '-1');\n }\n this.activeEle = curEle;\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {ToolbarModel} newProp\n * @param {ToolbarModel} oldProp\n * @returns void\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array) && !this.isServerRendered) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var newProperty = Object(newProp.items[index])[property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[index].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n var wid = tEle.offsetWidth;\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(tEle, CLS_RTL) : this.remove(tEle, CLS_RTL);\n if (!isNOU(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL) : this.remove(this.scrollModule.element, CLS_RTL);\n }\n if (!isNOU(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL) : this.remove(this.popObj.element, CLS_RTL);\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns void.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var initIndex;\n var ele;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n var innerItems_2 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems_2.indexOf(ele);\n }\n var nextEle = innerItems_2[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems_2[++eleIndex];\n }\n }\n }\n else if (isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n var setFlag = false;\n var removeFlag = false;\n var initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n var skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, isBlazor, updateBlazorTemplate, select } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n * The `Toolbar` module is used to handle ToolBar actions.\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.parent.enableAdaptiveUI ? '' : this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: this.l10n.getConstant('Columnchooser'), tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right',\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon'\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n * @return {Element}\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n * @method destroy\n * @return {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n remove(this.element);\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = ' \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getResponsiveToolbarItems(this.getItems());\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this)\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[viewStr]) {\n this.toolbar[registerTemp] = {};\n this.toolbar[viewStr] = this.parent[viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.toolbar.overflowMode = 'Popup';\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (!isBlazor() && typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n if (isBlazor()) {\n var tempID = this.parent.element.id + 'toolbarTemplate';\n var item = appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', tempID));\n var items_1 = this.getItem(item);\n this.toolbar.items.push(items_1);\n this.toolbar.appendTo(this.element);\n updateBlazorTemplate(this.parent.element.id + 'toolbarTemplate', 'ToolbarTemplate', this.parent);\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n }\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n };\n Toolbar.prototype.getResponsiveToolbarItems = function (items) {\n if (this.parent.enableAdaptiveUI) {\n for (var i = 0; i < items.length; i++) {\n items[i].visible = (items[i].id === this.parent.element.id + '_add'\n || items[i].id === this.parent.element.id + '_search' || items[i].id === this.parent.element.id + '_responsivesort'\n || items[i].id === this.parent.element.id + '_responsivefilter');\n }\n }\n return items;\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n var items = this.toolbar.items;\n var initial = ['add', 'search', 'responsivesort', 'responsivefilter'];\n if (this.parent.getSelectedRowIndexes().length) {\n initial.push('edit', 'delete');\n if (this.parent.rowRenderingMode !== 'Vertical') {\n initial.push('update', 'cancel');\n }\n }\n var search = ['responsiveback', 'search'];\n var buttons = action === ResponsiveToolbarAction.isInitial ? initial : search;\n for (var i = 0; i < items.length; i++) {\n var names = items[i].id.split('_');\n var ele = this.element.querySelector('#' + items[i].id);\n if (ele) {\n var parent_1 = parentsUntil(ele, 'e-toolbar-item');\n if (buttons.indexOf(names[1]) > -1) {\n parent_1.classList.remove('e-hidden');\n }\n else {\n parent_1.classList.add('e-hidden');\n }\n }\n }\n return items;\n };\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n edit.allowAdding ? enableItems.push(this.gridID + '_add') : disableItems.push(this.gridID + '_add');\n edit.allowEditing && hasData ? enableItems.push(this.gridID + '_edit') : disableItems.push(this.gridID + '_edit');\n edit.allowDeleting && hasData ? enableItems.push(this.gridID + '_delete') : disableItems.push(this.gridID + '_delete');\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.querySelectorAll('.e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n if (this.parent.enableAdaptiveUI) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {\n var item = items_2[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = !isBlazor() || this.parent.isJsComponent ? args : { item: args.item, cancel: args.cancel, name: args.name };\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n break;\n case gID + '_columnchooser':\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case 'copy':\n if (isBlazor()) {\n gObj.copy();\n }\n break;\n case 'copyheader':\n case 'copyHeader':\n if (isBlazor()) {\n gObj.copy(true);\n }\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n };\n Toolbar.prototype.search = function () {\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.reRenderToolbar, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.uiUpdate, this.onPropertyChanged, this);\n this.parent.on(events.inBoundModelChanged, this.updateSearchBox.bind(this));\n this.parent.on(events.modelChanged, this.refreshToolbarItems, this);\n this.parent.on(events.toolbarRefresh, this.refreshToolbarItems, this);\n this.parent.on(events.inBoundModelChanged, this.modelChanged, this);\n this.parent.on(events.dataBound, this.refreshToolbarItems, this);\n this.parent.on(events.click, this.removeResponsiveSearch, this);\n this.parent.on(events.rowModeChange, this.reRenderToolbar, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.reRenderToolbar);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.onPropertyChanged);\n this.parent.off(events.inBoundModelChanged, this.updateSearchBox);\n this.parent.off(events.modelChanged, this.refreshToolbarItems);\n this.parent.off(events.toolbarRefresh, this.refreshToolbarItems);\n this.parent.off(events.inBoundModelChanged, this.modelChanged);\n this.parent.off(events.dataBound, this.refreshToolbarItems);\n this.parent.off(events.click, this.removeResponsiveSearch);\n this.parent.off(events.rowModeChange, this.reRenderToolbar);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n * @return {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[i], sortedCols);\n if (this.columnName === gCols[i]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[i]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @return {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n var column = gObj.getColumnHeaderByField(columnName);\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols; \n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[i]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[i].isFromGroup) {\n this.sortedColumns.push(sortColumns[i].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[i].field);\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[i].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, {\n requestType: 'sorting', type: events.actionBegin, target: this.currentTarget\n });\n }\n break;\n }\n }\n this.addSortIcons();\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n return;\n }\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.sortComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressed, this);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.sortComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressed);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the sorting\n * @return {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.refreshing) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n var direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.querySelectorAll('.e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n }\n else {\n this.sortColumn(field, direction, e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey));\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (fieldNames.indexOf(cols[i].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, cols[i].direction);\n if (this.isMultiSort && cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[i].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1 &&\n !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[i].field === field) {\n return this.sortSettings.columns[i];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n * @return {void}\n * @hidden\n */\n Sort.prototype.showCustomFilter = function () {\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n * @param {Object} data - To update new data for the particular row.\n * @return {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @return {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","/**\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 * 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","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, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n * @param {ButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n * @returns void\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n Button.prototype.destroy = function () {\n var span;\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n * @returns string\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n * @private\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n * @param {ButtonModel} newProp\n * @param {ButtonModel} oldProp\n * @returns void\n * @private\n */\n Button.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 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss':\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content':\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n * @public\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n * @public\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { colGroupRefresh, columnWidthChanged, scroll, columnVisibilityChanged, refreshFooterRenderer } from '../base/constant';\nimport { ContentRender } from './content-renderer';\nimport { RowRenderer } from './row-renderer';\nimport { SummaryModelGenerator } from '../services/summary-model-generator';\nimport { renderMovable, calculateAggregate, iterateExtend } from '../base/util';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Footer module is used to render grid content\n * @hidden\n */\nvar FooterRenderer = /** @class */ (function (_super) {\n __extends(FooterRenderer, _super);\n function FooterRenderer(gridModule, serviceLocator) {\n var _this = _super.call(this, gridModule, serviceLocator) || this;\n _this.aggregates = {};\n _this.parent = gridModule;\n _this.locator = serviceLocator;\n _this.modelGenerator = new SummaryModelGenerator(_this.parent);\n _this.addEventListener();\n return _this;\n }\n /**\n * The function is used to render grid footer div\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: 'e-gridfooter' });\n var innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n var movableContent = innerDiv;\n if (this.parent.isFrozenGrid()) {\n var fDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-left-footercontent' });\n var mDiv = this.parent.createElement('div', { className: 'e-movablefootercontent' });\n var frDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-right-footercontent' });\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n innerDiv.appendChild(fDiv);\n this.frozenContent = fDiv;\n }\n innerDiv.appendChild(mDiv);\n this.movableContent = mDiv;\n movableContent = mDiv;\n if (this.parent.getFrozenRightColumnsCount()) {\n innerDiv.appendChild(frDiv);\n this.frozenRightContent = frDiv;\n }\n }\n if (Browser.isDevice) {\n movableContent.style.overflowX = 'scroll';\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid footer table\n */\n FooterRenderer.prototype.renderTable = function () {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var innerDiv = this.createContentTable('_footer_table');\n var table = innerDiv.querySelector('.e-table');\n var tFoot = this.parent.createElement('tfoot');\n table.appendChild(tFoot);\n if (this.parent.isFrozenGrid()) {\n var freezeTable = table.cloneNode(true);\n var frTable = table.cloneNode(true);\n if (frzCols) {\n this.frozenContent.appendChild(freezeTable);\n this.freezeTable = freezeTable;\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n remove(frTable.querySelector('colgroup'));\n var hdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCol = (hdr.querySelector('colgroup').cloneNode(true));\n frTable.insertBefore(frCol, frTable.querySelector('tbody'));\n this.frozenRightContent.appendChild(frTable);\n this.frTable = frTable;\n }\n this.movableContent.appendChild(table);\n remove(table.querySelector('colgroup'));\n var colGroup = ((this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n table.insertBefore(colGroup, table.querySelector('tbody'));\n this.setColGroup(colGroup);\n }\n this.setTable(table);\n };\n FooterRenderer.prototype.renderSummaryContent = function (e, table, cStart, cEnd) {\n var input = this.parent.dataSource instanceof Array ? this.parent.dataSource : this.parent.currentViewData;\n var summaries = this.modelGenerator.getData();\n var dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart, cEnd);\n var rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n var fragment = document.createDocumentFragment();\n var rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow' });\n for (var srow = 0, len = summaries.length; srow < len; srow++) {\n var row = rows[srow];\n if (!row) {\n continue;\n }\n var tr = rowrenderer.render(row, dummies);\n fragment.appendChild(tr);\n }\n table.tFoot.appendChild(fragment);\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n };\n FooterRenderer.prototype.refresh = function (e) {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (this.parent.isFrozenGrid()) {\n remove(this.getPanel());\n this.renderPanel();\n this.renderTable();\n if (frzCols) {\n this.freezeTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.freezeTable, 0, frzCols);\n }\n }\n this.getTable().tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.getTable(), frzCols, right ? frzCols + movable : undefined);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.frTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.frTable, frzCols + movable, frzCols + movable + right);\n var movableLastCell = [].slice.call(this.getTable().querySelectorAll('.e-lastsummarycell'));\n if (movableLastCell.length) {\n for (var i = 0; i < movableLastCell.length; i++) {\n movableLastCell[i].style.borderRight = '0px';\n }\n }\n }\n // check freeze content have no row case\n if (this.parent.isFrozenGrid()) {\n var movableCnt = [].slice.call(this.parent.element.querySelector('.e-movablefootercontent')\n .querySelectorAll('.e-summaryrow'));\n var frozenCnt = void 0;\n if (frzCols) {\n frozenCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-left-footercontent')\n .querySelectorAll('.e-summaryrow'));\n this.refreshHeight(frozenCnt, movableCnt);\n var frozenDiv = this.frozenContent;\n if (!frozenDiv.offsetHeight) {\n frozenDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (right) {\n var frCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-right-footercontent')\n .querySelectorAll('.e-summaryrow'));\n this.refreshHeight(frCnt, movableCnt);\n if (frozenCnt) {\n this.refreshHeight(frCnt, frozenCnt);\n }\n var frDiv = this.frTable;\n if (!frDiv.offsetHeight) {\n frDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (this.parent.allowResizing) {\n this.updateFooterTableWidth(this.getTable());\n }\n }\n this.onScroll();\n };\n FooterRenderer.prototype.refreshHeight = function (frozenCnt, movableCnt) {\n for (var i = 0; i < frozenCnt.length; i++) {\n var frozenHeight = frozenCnt[i].getBoundingClientRect().height;\n var movableHeight = movableCnt[i].getBoundingClientRect().height;\n if (frozenHeight < movableHeight) {\n frozenCnt[i].classList.remove('e-hide');\n frozenCnt[i].style.height = movableHeight + 'px';\n }\n else if (frozenHeight > movableHeight) {\n movableCnt[i].classList.remove('e-hide');\n movableCnt[i].style.height = frozenHeight + 'px';\n }\n }\n };\n FooterRenderer.prototype.refreshCol = function () {\n // frozen table \n var mheaderCol;\n var fheaderCol = mheaderCol = this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n if (this.parent.getFrozenColumns()) {\n var isXaxis = this.parent.enableColumnVirtualization && this.parent.contentModule.isXaxis();\n if (isXaxis) {\n mheaderCol = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n mheaderCol = renderMovable(fheaderCol, this.parent.getFrozenColumns(), this.parent);\n this.freezeTable.replaceChild(fheaderCol, this.freezeTable.querySelector('colGroup'));\n }\n }\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n };\n FooterRenderer.prototype.onWidthChange = function (args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n };\n FooterRenderer.prototype.onScroll = function (e) {\n if (e === void 0) { e = {\n left: this.parent.isFrozenGrid() ? this.parent.getContent().querySelector('.e-movablecontent').scrollLeft :\n this.parent.getContent().firstChild.scrollLeft\n }; }\n this.getTable().parentElement.scrollLeft = e.left;\n };\n FooterRenderer.prototype.getColFromIndex = function (index) {\n var fCol = this.parent.getFrozenColumns();\n fCol = fCol && this.parent.isRowDragable() ? fCol + 1 : fCol;\n if (fCol && fCol > index) {\n return this.freezeTable.querySelector('colGroup').children[index];\n }\n return this.getColGroup().children[index - fCol];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.parent.on(colGroupRefresh, this.refreshCol, this);\n this.parent.on(columnWidthChanged, this.onWidthChange, this);\n this.parent.on(scroll, this.onScroll, this);\n this.parent.on(columnVisibilityChanged, this.columnVisibilityChanged, this);\n this.parent.on(refreshFooterRenderer, this.refreshFooterRenderer, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n this.parent.off(colGroupRefresh, this.refreshCol);\n this.parent.off(columnWidthChanged, this.onWidthChange);\n this.parent.off(scroll, this.onScroll);\n this.parent.off(columnVisibilityChanged, this.columnVisibilityChanged);\n this.parent.off(refreshFooterRenderer, this.refreshFooterRenderer);\n };\n FooterRenderer.prototype.updateFooterTableWidth = function (tFoot) {\n var tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n };\n FooterRenderer.prototype.refreshFooterRenderer = function (editedData) {\n var aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n };\n FooterRenderer.prototype.getIndexByKey = function (data, ds) {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < ds.length; i++) {\n if (ds[i][key] === data[key]) {\n return i;\n }\n }\n return -1;\n };\n FooterRenderer.prototype.onAggregates = function (editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dataSource = [];\n var isModified = false;\n var batchChanges = {};\n var gridData = 'dataSource';\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var deletedRecords = 'deletedRecords';\n var currentViewData = this.parent.dataSource instanceof Array ?\n this.parent.dataSource : this.parent.dataSource[gridData].json.length\n ? this.parent.dataSource[gridData].json : this.parent.getCurrentViewRecords();\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (var i = 0; i < currentViewData.length; i++) {\n isModified = false;\n if (batchChanges[changedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[changedRecords]) > -1) {\n isModified = true;\n dataSource.push(batchChanges[changedRecords][this.getIndexByKey(currentViewData[i], batchChanges[changedRecords])]);\n }\n if (batchChanges[deletedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[i]);\n }\n }\n if (batchChanges[addedRecords].length) {\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n dataSource.push(batchChanges[addedRecords][i]);\n }\n }\n }\n else {\n if (editedData.length) {\n var data = iterateExtend(currentViewData);\n dataSource = data.map(function (item) {\n var idVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = editedData.some(function (cItem) {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n var eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n var aggregate = {};\n var agrVal;\n var aggregateRows = this.parent.aggregates;\n for (var i = 0; i < aggregateRows.length; i++) {\n for (var j = 0; j < aggregateRows[i].columns.length; j++) {\n var data = [];\n var type = aggregateRows[i].columns[j].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[i].columns[j], this.parent);\n aggregate[aggregateRows[i].columns[j].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n var result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n };\n return FooterRenderer;\n}(ContentRender));\nexport { FooterRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { refreshAggregateCell } from '../base/constant';\n/**\n * SummaryCellRenderer class which responsible for building summary cell content.\n * @hidden\n */\nvar SummaryCellRenderer = /** @class */ (function (_super) {\n __extends(SummaryCellRenderer, _super);\n function SummaryCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n SummaryCellRenderer.prototype.getValue = function (field, data, column) {\n var key;\n key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][key] : '';\n };\n SummaryCellRenderer.prototype.evaluate = function (node, cell, data, attributes) {\n var column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.style.display = 'none';\n }\n return true;\n }\n else {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.classList.add('e-lastsummarycell');\n }\n }\n var tempObj = column.getTemplate(cell.cellType);\n var tempID = '';\n var gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n var fData = gColumn.columnData.filter(function (e) {\n return e[gColumn.foreignKeyField] === data[column.columnName].key;\n })[0];\n if (fData) {\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n }\n if (isBlazor()) {\n var guid = 'guid';\n tempID = this.parent.element.id + column[guid] + tempObj.property;\n }\n var isReactCompiler = this.parent.isReact && (column.footerTemplate ?\n typeof (column.footerTemplate) !== 'string' : column.groupFooterTemplate ? typeof (column.groupFooterTemplate) !== 'string'\n : column.groupCaptionTemplate ? typeof (column.groupCaptionTemplate) !== 'string' : false);\n if (isReactCompiler) {\n var prop = data[column.columnName];\n if (tempObj.property === 'groupCaptionTemplate' || tempObj.property === 'groupFooterTemplate') {\n var groupKey = 'groupKey';\n var key = 'key';\n prop[groupKey] = prop[key];\n }\n tempObj.fn(prop, this.parent, tempObj.property, tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n }\n return false;\n };\n SummaryCellRenderer.prototype.refreshWithAggregate = function (node, cell) {\n var _this = this;\n var cellNode = cell;\n return function (args) {\n var cell = cellNode;\n var field = cell.column.columnName ? cell.column.columnName : null;\n var curCell = (!isNullOrUndefined(field) ? args.cells.filter(function (cell) {\n return cell.column.columnName === field;\n })[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field &&\n field === curCell.column.columnName) {\n _this.refreshTD(node, curCell, args.data);\n }\n };\n };\n return SummaryCellRenderer;\n}(CellRenderer));\nexport { SummaryCellRenderer };\n","import { remove, isBlazor, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { uiUpdate, initialEnd, dataReady, modelChanged, refreshAggregates, refreshFooterRenderer, groupAggregates } from '../base/constant';\nimport { FooterRenderer } from '../renderer/footer-renderer';\nimport { SummaryCellRenderer } from '../renderer/summary-cell-renderer';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\n/**\n * Summary Action controller.\n */\nvar Aggregate = /** @class */ (function () {\n function Aggregate(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Aggregate.prototype.getModuleName = function () {\n return 'aggregate';\n };\n Aggregate.prototype.initiateRender = function () {\n var _this = this;\n var cellFac = this.locator.getService('cellRendererFactory');\n var instance = new SummaryCellRenderer(this.parent, this.locator);\n var type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (var i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[i], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n var footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight >= this.parent.getHeight(this.parent.height)\n && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n var fn = function () {\n _this.prepareSummaryInfo();\n _this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n };\n /**\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var dataColumn = _this.parent.getColumnByField(column.field) || {};\n var type = dataColumn.type;\n var cFormat = 'customFormat';\n if (!isNullOrUndefined(column[cFormat])) {\n column.setPropertiesSilent({ format: column[cFormat] });\n }\n if (typeof (column.format) === 'object') {\n var valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n var fmtr = _this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n if (isBlazor() && this.parent.isServerRendered) {\n var bulkChanges = 'bulkChanges';\n var aggregates = 'aggregates';\n var prop = Object.keys(this.parent[bulkChanges]);\n for (var i = 0; i < prop.length; i++) {\n if (prop[i].startsWith(aggregates)) {\n delete this.parent[bulkChanges][prop[i]];\n }\n }\n }\n };\n Aggregate.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n var cModel = new CaptionSummaryModelGenerator(this.parent);\n var gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n };\n Aggregate.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n remove(this.parent.element.querySelector('.e-gridfooter'));\n };\n Aggregate.prototype.refresh = function (data) {\n var editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n };\n return Aggregate;\n}());\nexport { Aggregate };\n/**\n * @private\n */\nexport function summaryIterator(aggregates, callback) {\n for (var i = 0; i < aggregates.length; i++) {\n for (var j = 0; j < aggregates[i].columns.length; j++) {\n callback(aggregates[i].columns[j], aggregates[i]);\n }\n }\n}\n"],"sourceRoot":""}