{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","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:///./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-data/src/manager.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack:///./src/store/calendar/moduleCalendarState.js","webpack:///./src/store/calendar/moduleCalendarMutations.js","webpack:///./src/store/calendar/moduleCalendarActions.js","webpack:///./src/store/calendar/moduleCalendarGetters.js","webpack:///./src/store/calendar/moduleCalendar.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:///./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/vue-simple-calendar/dist/CalendarView.umd.js","webpack:///./src/views/ui-elements/FAMSUI/QuickCalendarView.vue?aa69","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:///./src/views/ui-elements/FAMSUI/QuickCalendarView.vue","webpack:///src/views/ui-elements/FAMSUI/QuickCalendarView.vue","webpack:///./src/views/ui-elements/FAMSUI/QuickCalendarView.vue?437c","webpack:///./src/views/ui-elements/FAMSUI/QuickCalendarView.vue?88d2","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/@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:///./src/views/ui-elements/FAMSUI/QuickCalendarView.vue?15f9","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/vuejs-datepicker/src/locale/Language.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/af.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ar.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/bg.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/bs.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ca.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/cs.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/da.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/de.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ee.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/el.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/en.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/es.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/fa.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/fi.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/fo.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/fr.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ge.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/he.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/hr.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/hu.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/id.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/is.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/it.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ja.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ko.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/lb.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/lt.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/lv.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/mn.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/nb-NO.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/nl.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/pl.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/pt-BR.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ro.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ru.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/sk.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/sl-SI.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/sr-CYRL.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/sr.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/sv.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/th.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/tr.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/uk.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/ur.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/vi.js","webpack:///./node_modules/vuejs-datepicker/src/locale/translations/zh.js","webpack:///./node_modules/vuejs-datepicker/src/locale/index.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","Group","parent","groupSettings","sortedColumns","serviceLocator","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","visualElement","className","styles","attrs","helper","gObj","sender","element","allowReordering","column","getColumnByField","firstElementChild","offsetWidth","offsetHeight","dragStart","bindEvents","dragElement","drag","animateDropper","cloneElement","trigger","draggableType","dragStop","preventDrop","rearrangeGroup","getColumnByUid","columns","ungroupColumn","dragField","dropTarget","grouped","querySelectorAll","cols","dropField","dropIndex","dragIndex","flag","c","addColToGroupDrop","addLabel","removeColFromGroupDrop","drop","droppedElement","aria","setDropTarget","setGrabbed","getHeaderTable","allowGrouping","getColumnHeaderByUid","log","moduleName","columnName","headerText","groupColumn","contentRefresh","focus","getService","addEventListener","groupGenerator","dragLabel","l10n","getConstant","updateModel","columnDrag","columnDragStart","dropArea","columnDrop","isDestroyed","on","enableAfterRender","onActionComplete","onPropertyChanged","clickHandler","refreshSortIcons","keyPressHandler","initialEnd","render","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","allowSorting","getColumnHeaderByField","sortColumn","trgt","cellIdx","cellIndex","rowIdx","rowNodes","expandElem","toExpand","indent","notify","updateVirtualRows","enableLazyLoading","contentModule","captionExpand","captionCollapse","setExpand","len","display","updateVisibleexpandCollapseRows","getRowsObject","isDataRow","getRowElementByUID","visible","rObj","getRowObjectFromUID","closest","getDataModule","generateQuery","aggregateQuery","getQuery","rowObject","requiresCount","then","renderModule","dataManagerSuccess","expandCollapse","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","createElement","showDropArea","clear","initializeGHeaderDrop","initializeGHeaderDrag","dragTarget","distance","instance","handler","arg1","showGroupedColumn","colName","enableColumnVirtualization","setVisible","sortSettings","dataBind","groupAddSortingQuery","isJsComponent","isFromGroup","animator","groupedColumn","childDiv","headerCell","title","tabindex","showUngroupButton","createSeparator","toString","isRemove","headers","showColumnMenu","getGHeaderCell","parent_1","module","properties","oldProperties","refreshHeader","updateGroupedColumn","updateButtonVisibility","freezeRefresh","isVisible","enable","destroy","gridElement","refreshing","clearGrouping","header","gCols","editedData","iterateGroupAggregates","rowData","generateRows","summaryRows","updateSummaryRows","isReact","destroyTemplate","cells","cell","isDataCell","dataUid","updatedData","initData","getCurrentViewRecords","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","close","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","first","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","click","btnClick","buttonModel","isExcel","isPrimary","created","dialogCreated","open","dialogOpen","isStringTemplate","renderResponsiveFilter","isResponsiveFilter","responsiveCnt","appendTo","maxHeight","show","getAllData","X","Y","left","isDevice","openDialog","filterTemplateCol","getFilterItemTemplate","registeredTemplate","filterItemTemplate","renderTemplates","clearFilter","tagName","isForeignColumn","keyCode","fltrBtnHandler","text","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","allowPaging","enableVirtualization","enableInfiniteScrolling","pageSettings","currentPage","pageCount","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","_c","_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","__decorate","decorators","desc","r","getOwnPropertyDescriptor","Reflect","decorate","Column","disableHtmlEncode","allowResizing","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","skeleton","setFormatter","getFormatFunction","setParser","getParserFunction","commands","textAlign","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","toolbar","refreshOverflow","setHeight","mHdrHeight","getContent","isFrozenGrid","getScrollBarWidth","frozenRows","tbody","getHeaderContent","height_1","getRowHeight","ensureOverflow","refresh","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","clientHeight","scrollHeight","css","overflowY","cont","SummaryModelGenerator","footerTemplate","groupFooterTemplate","groupCaptionTemplate","columnSelector","detailTemplate","childGrid","isRowDragable","getIndentCount","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","Indent","DetailFooterIntent","attributes","class","getRowUid","cellType","sColumn","scolumn","opt","dummy","single","setTemplate","a","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","reduce","prev","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","parentNode","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","DataManager","timeTillExpiration","cachingPageSize","enableCaching","jsonp","isCors","defaultQuery","isDataAvailable","setDefaultQuery","buildHierarchy","makeRequest","Deferred","isAjaxAdaptor","getDeferedArgs","nextTick","setImmediate","extendRequest","fnSuccess","fnFail","cache","processData","onSuccess","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","getBoundingClientRect","ownerDocument","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","elementRect","right","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","eventLabels","events","ADD_EVENT","SET_EVENTS","SET_LABELS","labels","UPDATE_EVENT","eventIndex","findIndex","assign","REMOVE_EVENT","eventId","addEvent","_ref","commit","axios","post","response","fetchEvents","_ref2","fetchEventLabels","_ref3","editEvent","_ref4","startDate","endDate","removeEvent","_ref5","delete","eventDragged","_ref6","payload","getEvent","find","namespaced","mutations","actions","getters","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","ref","base","compare","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","wrapText","hAlign","vAlign","numberFormat","borders","Borders","isGlobalStyle","Font","sz","u","color","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","fileName","zipArchive","saveInternal","saveAsBlob","blob","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","Blob","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","charCodeAt","bytes","modTime","modiDate","getFullYear","getMonth","getDate","itemName","ValueFormatter","cultureName","intl","getDateFormat","getNumberFormat","displayText","CsvHelper","separator","csvStr","formatter","globalStyles","Map","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","has","dataUrl_1","URL","createObjectURL","dwlLink","download","href","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","toColumn","freezePanes","leftCell","columnsLength","rowsLength","rowId","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","isHidden","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","colSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","toUpperCase","rgbColors","processCellValue","cellValue","processedVal","startindex","endIndex","subString","subSplit","subSplit_1","trim","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","round","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","year","month","day","ticksPerDay","daysToMonth365","daysToMonth366","days","isLeapYear","timeToTicks","hour","minute","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","ExcelExport","locator","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","gridPool","init","isExporting","footer","exportValueFormatter","grid","exportProperties","isMultipleExport","workbook","isCsv","isBlob","isBlb","workbk","isMultiEx","hierarchyExportMode","expandedRows","gridObject","processRecords","exportingSuccess","blobPromise","exportType","allPromise_1","getColumnData","processInnerRecords","query_1","groupedColLength","blankRows","colDepth","isExportPropertiesPresent","multipleExport","processExcelHeader","childGridLevel","processGridExport","globalResolve","checkAndExport","organisedRows","organiseRows","processExcelFooter","getVisibleColumns","enableFilter","currencyCode","initialIndex","childRows","excelRows","getFrozenColumns","hierarchyPrintMode","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","isPrinting","returnVal","createChildGrid","childGridObj","actionFailure","failureHandler","beforeDataBound","childGridCell","rowObj","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","modules","getInjectedModules","injectedModues","setInjectedModules","printgrid","selectedRows","contentDiv","headerDiv","overflowX","waitingPop","printGridElement","depth","groupCaption","colGroups","contentColGroups","hideColGroup","printGridProp","getDateParser","getNumberParser","setCulture","isBlazorPlatform","createInstance","classFunction","arrayParam","unshift","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","clearInterval","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","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","isNaN","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","formatDate","parseDate","parseNumber","isExcelFormat","getActualDateTimeFormat","getActualNumberFormat","getFirstDayOfWeek","getWeekData","blazorCultureFormats","IntlBase","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","defaultFirstDay","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","tPattern","mode","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","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","component","propName","templateId","blazorTemplateId","randomId","blazorId","childNodes","updateBlazorTemplate","templateName","comp","callBack","ejsIntrop","updateTemplate","resetBlazorTemplate","templateDiv","getElementById","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","model","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","Inject","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","root","factory","exports","self","installedModules","__webpack_require__","moduleId","getter","Symbol","toStringTag","t","__esModule","ns","object","toInteger","defined","TO_STRING","that","at","S","unicode","it","ctx","IObject","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","O","$export","sign","anObject","global","multiline","sticky","$keys","enumBugKeys","cof","pIE","createDesc","toIObject","toPrimitive","IE8_DOM_DEFINE","gOPD","dP","getKeys","defineProperties","Properties","$at","iterated","_t","TypeError","is","$defineProperty","redefine","hide","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","forceStringMethod","strfn","rxfn","string","cssWithMappingToString","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","sourceRoot","sourceMap","unescape","mediaQuery","alreadyImportedModules","TAG","ARG","tryGet","T","B","callee","isRegExp","speciesConstructor","advanceStringIndex","callRegExpExec","$min","$push","$SPLIT","LENGTH","LAST_INDEX","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","maybeCallNative","internalSplit","lastIndex","lastLength","flags","lastLastIndex","splitLimit","separatorCopy","splitter","rx","unicodeMatching","lim","SRC","$toString","TPL","inspectSource","safe","isFunction","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","contentWindow","F","store","USE_SYMBOL","$exports","un","LIBRARY","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","propertyIsEnumerable","toAbsoluteIndex","aLen","endPos","ArrayProto","ceil","bitmap","writable","__webpack_exports__","listToStyles","parentId","newStyles","media","addStylesClient","hasDocument","DEBUG","stylesInDom","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","_isProduction","_options","addStylesToDom","mayRemove","domStyle","refs","addStyle","createStyleElement","styleElement","applyToSingletonTag","applyToTag","replaceText","textStore","replacement","Boolean","styleSheet","cssText","cssNode","createTextNode","ssrId","SAFE_CLOSING","riter","skipClosing","iter","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","ObjectProto","isArrayIter","createProperty","getIterFn","arrayLike","iterator","mapfn","mapping","iterFn","core","SHARED","copyright","shared","aFunction","$sort","comparefn","__e","IS_INCLUDES","own","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","W","R","classof","builtinExec","_node_modules_vue_style_loader_index_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_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarViewHeader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_style_loader_index_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_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarViewHeader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","px","IS_WRAP","virtual","TO_STRING_TAG","DOMIterables","fill","rConstruct","construct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","$find","forced","__g","getIteratorMethod","locals","default","Attributes","buggy","hiddenKeys","gOPS","$assign","K","getSymbols","isEnum","isIterable","getOwnPropertySymbols","UNSCOPABLES","_node_modules_vue_style_loader_index_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_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarView_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_style_loader_index_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_postcss_loader_src_index_js_ref_6_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CalendarView_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","spaces","space","non","ltrim","rtrim","exporter","ALIAS","FORCE","MATCH","invoke","arraySlice","factories","partArgs","bound","addToUnscopables","_k","Arguments","inheritIfRequired","gOPN","$trim","NUMBER","$Number","BROKEN_COF","TRIM","toNumber","third","radix","maxCode","arrayIndexOf","D","setPublicPath_i","currentScript","_vm","$createElement","_self","languageCode","displayLocale","periodStart","paddedMonth","displayPeriodUom","displayPeriodCount","past","isPastMonth","future","isFutureMonth","noIntl","supportsIntl","headerProps","staticClass","_l","getColumnDOWClass","_v","_s","weekStart","weekIndex","isoYearMonthDay","daysOfWeek","dayIndex","isoMonthDay","paddedDay","instanceOfMonth","today","isSameDate","outsideOfMonth","isSameMonth","defaultedShowDate","isInPast","isInFuture","isLastDayOfMonth","lastInstance","isLastInstanceOfMonth","dateClasses","$event","onClickDay","onDrop","onDragOver","onDragEnter","onDragLeave","getWeekEvents","getEventTop","enableDragDrop","domProps","getEventTitle","onDragStart","onMouseEnter","onMouseLeave","stopPropagation","onClickEvent","staticRenderFns","is_array","is_array_default","_arrayWithoutHoles","arr2","from_default","is_iterable","is_iterable_default","_iterableToArray","_nonIterableSpread","_toConsumableArray","object_assign","assign_default","construct_default","set_prototype_of","set_prototype_of_default","_setPrototypeOf","isNativeReflectConstruct","sham","Proxy","construct_construct","Parent","Class","keys_default","CalendarMathMixin","dateOnly","beginningOfPeriod","periodUom","startDow","beginningOfWeek","_","addDays","endOfWeek","beginningOfMonth","incrementPeriod","uom","isoYearMonth","formattedTime","ms","toLocaleTimeString","formattedPeriod","monthNames","singleYear","singleMonth","isYear","isMonth","isWeek","dayDiff","d1","d2","setUTCHours","isSameDateTime","isSelectedDay","_this2","fromIsoStringToLocalDate","toLocalDate","Intl","getFormattedMonthNames","DateTimeFormat","getFormattedWeekdayNames","startingDayOfWeek","getDefaultBrowserLocale","languages","browserLanguage","normalizeEvent","isHovered","eventClasses","CalendarViewHeadervue_type_template_id_1b0c0f08_render","previousYear","onInput","previousPeriod","currentPeriod","currentPeriodLabel","nextPeriod","nextYear","periodLabel","CalendarViewHeadervue_type_template_id_1b0c0f08_staticRenderFns","CalendarViewHeadervue_type_script_lang_js_","required","$emit","components_CalendarViewHeadervue_type_script_lang_js_","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","CalendarViewHeader","CalendarViewvue_type_script_lang_js_","components","mixins","showDate","monthNameFormat","weekdayNameFormat","showEventTimes","timeFormatOptions","disablePast","disableFuture","eventTop","eventContentHeight","eventBorderHeight","periodChangedCallback","currentPeriodLabelIcons","currentDragEvent","currentHoveredEventId","computed","periodEnd","displayFirstDate","displayLastDate","weeksOfPeriod","numWeeks","weekdayNames","fixedEvents","currentPeriodStart","currentPeriodEnd","currentPeriodLabelFinal","getIncrementedPeriod","previousFullPeriod","nextFullPeriod","periodRange","watch","immediate","newVal","newStartDate","newEndDate","calendarEvent","windowEvent","dataTransfer","setData","handleDragEvent","bubbleEventName","bubbleParam","$scopedSlots","findAndSortEventsInWeek","eventRows","ep","eventRow","continued","startOffset","getFormattedTimeRange","endTime","components_CalendarViewvue_type_script_lang_js_","CalendarView_component","CalendarView","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tr","cells_1","rowArgs","cellArgs","attrCopy","chekBoxEnable","isSelected","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","cellRenderer","getCellRenderer","DetailExpand","td","Filter","CommandColumn","requestTypeAction","isRowSpanned","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","rowHeight","lazyLoadCssClass","vFTable","frozenColumns","summarycell","lastSummaryCell","firstSummaryCell","isAltRow","rowindex","dataUID","ariaSelected","RowModelGenerator","getInfiniteIndex","generateRow","ensureColumns","generateCell","RowDragIcon","pid","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","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","lockColumn","colIndex","getColumnIndexByField","lineHeight","ariaService","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","colPosRefresh","renderCustomToolbar","rowRenderingMode","updateCustomResponsiveToolbar","renderPanel","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","getTable","headerTable","getColGroup","colgroup","setColGroup","colGroup","getRows","tHead","skipDom","createTable","createHeader","tableEle","cellspacing","tblName","getFrozenLeftCount","findHeaderRow","createHeaderContent","thead","bodyCell","rowBody","Header","len_1","updateColGroup","frozenMode","colHeader","rowRenderer","getHeaderCells","colFreezeMode","pop","indexes","getColumnIndexesInView","isXaxis","len_2","RowDragHIcon","lockcolPositionCount","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","getNormalizedColumnIndex","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","pagerModule","pagerObj","getGroupCache","refreshContentRows","detailTemplateID","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","alert","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","PageSettings","ColumnChooserSettings","ShowHide","showBy","getToggleFields","hideBy","finalized","getKeyBy","columnModel","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","isAvail","rIdx","mRows","frRows","dataRows","getMovableDataRows","getFrozenRightDataRows","getRowByIndex","getCellFromIndex","fTr","mTr","frTr","getColumnByIndex","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","isDetailRow","virtualContentModule","activeKey","blzRowIndex","selectRow","preventScroll","blazorDataLoad","foreignColumnsData","aggRows","aggRow","rowUid","offsetTime","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","Grid","keyA","frozenRightCount","frozenLeftCount","tablesCount","movableCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","isFreezeRefresh","tableIndex","componentRefresh","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","pageTemplateChange","mediaBindInstance","asyncTimeOut","enableLogger","Grid_1","keyEntity","selectedRowIndex","scrollPosition","currentObject","pagerTemplate","setFrozenCount","allowExcelExport","allowPdfExport","allowRowDragAndDrop","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","isExpanded","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","Search","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","Sort","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","home","escape","ctrlHome","ctrlEnd","pageUp","pageDown","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","f2","enter","ctrlEnter","shiftEnter","tab","shiftTab","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","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","fRows","mrows","includAdd","dRows","getAllMovableDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","setCellValue","fieldIdx","rowuID","pkName","selectedRow","movableSelectedRow","rowObjects","movableRowObjects","sRow","mRow","refreshTD","columnUid","rowsObj","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnsCount","getMovableColumnHeaderByIndex","getMovableVirtualHeader","getFrozenRightColumnHeaderByIndex","getFrozenRightHeader","getFrozenLeftColumnHeaderByIndex","getFrozenVirtualHeader","isFrozenRight","getMovableRowsObject","getFrozenRightRowsObject","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getRowTemplate","getDetailTemplate","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","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","sCols","sLen","parentDetails","parentKeyFieldValue","queryString","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","dataReady","popup","tabIndex","gridLines","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","elemNames","hoverFrozenRows","myTableDiv","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","collapse","focusHeader","addOutline","focusContent","refreshColumns","fCnt","frCnt","isColFrozen","getMovableContent","frTbl","getFrozenRightContent","colGrp","excelExport","excelExportModule","csvExport","pdfExport","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","timer","getMovableVirtualContent","getFrozenVirtualContent","rowEle","frozenRigtRows","frHdr","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","nonContentHeight","getNoncontentHeight","contentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","gridModel","getFormat","setHeaderText","form","gridInput","submit","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","portals","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","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","staticStyle","activeDashTab","callback","$$v","expression","calendarView","myEvents","getViewCalendarDetail","slot","$vs","updateMonth","myLicense","getViewLicenseExpireDetail","serviceDates","getViewOperatorLicenseExpireDetail","readingDates","showATGDetail","tanksList","getViewATGVsConsumption","tank","readingDates2","showATGStockReceived","getViewATGStockReceived","tank2","activePromptAddEvent","tankPopup","atgData","beforeDelivery","afterDelivery","capacity","openingStockDate","openingStock","closingStockDate","closingStock","consumption","delivery","ullage","activeEqpDetail","formData","registration","$set","directives","rawName","vin","engineNumber","seriesName","serviceInterval","serviceDate","license","licenseType","licenseExpiryDate","odometerReading","odometerReadingDate","owner","assignedDriver","burnRateHigh","burnRateLow","activeEqpDetail2","activeOperatorDetail","operatorDetail","idNumber","cellphoneNr","email","residentialAddress","postalAddress","pdpexpiryDate","activeOperatorDetail1","require","Aggregate","Page","Toolbar","PdfExport","Datepicker","flatPickr","vSelect","aggregateColumn","textToShow","localColforGrid","disabledFrom","labelLocal","dispensingData","operators","processedDates","processedDates2","colour","activePrompt3EditEvent","pdp","provide","Selection","getViewCalendar","getViewLicenseExpire","getViewServiceDates","getViewOperatorLicenseExpire","getViewOperatorPdpLicenseExpire","GetDropdownTanks","validForm","errors","disabledDatesTo","to","disabledDatesFrom","calendarLabels","$store","mounted","populateData","$refs","calendar1","calendar2","calendar3","calendar4","calendar5","calendar6","clearFields","promptAddNewEvent","addNewEventDialog","openAddNewEvent","openEditEvent","activePromptEditEvent","dispatch","showLoadingOnElement","volume","onFinally","loading","$el","$ajaxGet","newElement","toolbarClick","excelExportComplete","scrollSettings","isMounted","formatDateMoment","expiryDate","pdpExpiryDate","fromDate","tankId","closingDates","openingDates","$ajaxPost","infoToShow","successNotifyDataLoad","moment","scale","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","link","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","isFullNavigation","anchorWrapper","uID","blazId","removeBlazorID","liElement","generateIcon","FieldSettings","dropDownBaseClasses","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","isActive","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","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","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","filterType","selectionStart","selectionEnd","clearElement","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","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","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","autoFillRLselection","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","onClick","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","isEqualNode","headerSelectionHandler","byKey","keyArgs","isJump","isContent","isSelectable","headerAction","thLen","childElementCount","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","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","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","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","filename","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","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","w","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","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","tempObj","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","pageOrientation","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","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","g","blueColor","grayColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","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","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","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","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","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","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","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","templateElement","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","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","generate","validator","passiveFocus","skipAction","getFocusInfo","elementToFocus","force","beforeArgs","byClick","clickArgs","clearOutline","onKeyPress","skipOn","bValue","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","active","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","bool","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","headerDrop","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","preventBatch","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","beforePdfExport","pdfExportComplete","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","parentID","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","parents","calculateAggregate","Global","divNode","isActionPrevent","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","printMode","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","jsonData","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","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","getGridModel","parentPrimaryKeys","parentKeyField","parentRowData","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","Language","months","monthsAbbr","ymd","yearSuffix","_language","_months","_monthsAbbr","_days","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","gridData","idVal","agrVal","SummaryCellRenderer","refreshWithAggregate","gColumn","groupKey","cellNode","curCell","initiateRender","cellFac","footerRenderer","summaryIterator","dataColumn","cModel","gModel"],"mappings":"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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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MA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AAU8gH,oBAAsB,SAAU9J,GAE5C,IAAI6J,EAAQ7J,EAAIe,gBAAgD,IAA9Bf,EAAIe,eAAez1G,OAAe00G,EAAIe,eAAe,GAAKf,EAC5F,OAAO6J,GAEX,GAAW,CACP,MACDJ,EAAMzgH,UAAW,WAAO,GAC3B,GAAW,CACP,MACDygH,EAAMzgH,UAAW,eAAW,GAC/B,GAAW,CACP,MACDygH,EAAMzgH,UAAW,aAAS,GAC7B,GAAW,CACP,MACDygH,EAAMzgH,UAAW,cAAU,GAC9B,GAAW,CACP6rG,GAAS,MACV4U,EAAMzgH,UAAW,oBAAgB,GACpC,GAAW,CACP6rG,GAAS,MACV4U,EAAMzgH,UAAW,wBAAoB,GACxC,GAAW,CACPgsG,GAAQ,GAAI,KACbyU,EAAMzgH,UAAW,qBAAiB,GACrCygH,EAAQ,GAAW,CACfpU,IACDoU,GACIA,EAjQe,CAkQxB,IC3TE8D,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAE7mE,UAAW,OAAQgJ,SAAU,yBAC/B,CAAEhJ,UAAW,aAAcgJ,SAAU,+BACrC,CAAEhJ,UAAW,QAASgJ,SAAU,0BAChC,CAAEhJ,UAAW,QAASgJ,SAAU,0BAChC,CAAEhJ,UAAW,OAAQgJ,SAAU,qCAE/B89D,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,oBAEA,GAAoC,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P,eAAQ,GAAI,KACb21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACb21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAW,GAAI,KAChB21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACV21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAQ,GAAI,KACb21J,EAAK31J,UAAW,6BAAyB,GAC5C,GAAW,CACP,gBAAS,IACV21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAS,SACV21J,EAAK31J,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,SACV21J,EAAK31J,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,YACV21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,eAAS,aACV21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,aACV21J,EAAK31J,UAAW,0BAAsB,GACzC,GAAW,CACP,eAAS,KACV21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,OACV21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,QACV21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,IACV21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,IACV21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,QACV21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAS,KACV21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,YACV21J,EAAK31J,UAAW,kCAA8B,GACjD,GAAW,CACP,kBACD21J,EAAK31J,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACD21J,EAAK31J,UAAW,iCAA6B,GAChD,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mCAA+B,GAClD,GAAW,CACP,kBACD21J,EAAK31J,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACD21J,EAAK31J,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACD21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,eAAW,GAC9B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,+BAA2B,GAC9C,GAAW,CACP,kBACD21J,EAAK31J,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,iBAAa,GAChC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACD21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,kBAAc,GACjC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,mBAAe,GAClC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACD21J,EAAK31J,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACD21J,EAAK31J,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACD21J,EAAK31J,UAA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CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KA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AAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,OAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,OAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,OAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,OAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,OAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAE7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAM,MAC7CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,MAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,KAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9CxiD,KAAK+0P,yBAAyBvyM,SAAS,MAAO,OAC9Cx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,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK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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,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,KAEdd,EAASt0R,YAAc,CAQnBo6H,MAAO,SAAUlyG,EAAQu+C,EAAUn/F,EAAYC,GAK3C,OAJIA,IACA2gD,EAASosQ,EAASr/H,iBAAiB/sI,GACnC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","file":"js/chunk-348674c0.8d8c2f79.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","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","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 { 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","/*=========================================================================================\r\n File Name: moduleCalendarState.js\r\n Description: Calendar Module State\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nexport default {\r\n\r\n // Calendar Labels\r\n eventLabels: [],\r\n\r\n // Simple Calendar State\r\n events: []\r\n}\r\n","/*=========================================================================================\r\n File Name: moduleCalendarMutations.js\r\n Description: Calendar Module Mutations\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nexport default {\r\n ADD_EVENT(state, event) {\r\n state.events.push(event)\r\n },\r\n SET_EVENTS(state, events) {\r\n state.events = events\r\n },\r\n SET_LABELS(state, labels) {\r\n state.eventLabels = labels\r\n },\r\n UPDATE_EVENT(state, event) {\r\n const eventIndex = state.events.findIndex((e) => e.id == event.id)\r\n Object.assign(state.events[eventIndex], event)\r\n },\r\n REMOVE_EVENT(state, eventId) {\r\n const eventIndex = state.events.findIndex((e) => e.id == eventId)\r\n state.events.splice(eventIndex, 1)\r\n },\r\n}\r\n","/*=========================================================================================\r\n File Name: moduleCalendarActions.js\r\n Description: Calendar Module Actions\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\nimport axios from \"@/axios.js\"\r\n\r\nexport default {\r\n addEvent({ commit }, event) {\r\n return new Promise((resolve, reject) => {\r\n axios.post(\"/api/apps/calendar/events/\", {event: event})\r\n .then((response) => {\r\n commit('ADD_EVENT', Object.assign(event, {id: response.data.id}))\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchEvents({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios.get(\"/api/apps/calendar/events\")\r\n .then((response) => {\r\n commit('SET_EVENTS', response.data)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchEventLabels({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n axios.get(\"/api/apps/calendar/labels\")\r\n .then((response) => {\r\n commit('SET_LABELS', response.data)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n editEvent({ commit }, event) {\r\n return new Promise((resolve, reject) => {\r\n axios.post(`/api/apps/calendar/event/${event.id}`, {event: event})\r\n .then((response) => {\r\n\r\n // Convert Date String to Date Object\r\n let event = response.data\r\n event.startDate = new Date(event.startDate)\r\n event.endDate = new Date(event.endDate)\r\n\r\n commit('UPDATE_EVENT', event)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n removeEvent({ commit }, eventId) {\r\n return new Promise((resolve, reject) => {\r\n axios.delete(`/api/apps/calendar/event/${eventId}`)\r\n .then((response) => {\r\n commit('REMOVE_EVENT', response.data)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n eventDragged({ commit }, payload) {\r\n return new Promise((resolve, reject) => {\r\n axios.post(`/api/apps/calendar/event/dragged/${payload.event.id}`, {payload: payload})\r\n .then((response) => {\r\n\r\n // Convert Date String to Date Object\r\n let event = response.data\r\n event.startDate = new Date(event.startDate)\r\n event.endDate = new Date(event.endDate)\r\n\r\n commit('UPDATE_EVENT', event)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n}\r\n","/*=========================================================================================\r\n File Name: moduleCalendarGetters.js\r\n Description: Calendar Module Getters\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nexport default {\r\n getEvent: state => (eventId) => state.events.find((event) => event.id == eventId),\r\n}\r\n","/*=========================================================================================\r\n File Name: moduleCalendar.js\r\n Description: Calendar Module\r\n ----------------------------------------------------------------------------------------\r\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\r\n Author: Pixinvent\r\n Author URL: http://www.themeforest.net/user/pixinvent\r\n==========================================================================================*/\r\n\r\n\r\nimport state from './moduleCalendarState.js'\r\nimport mutations from './moduleCalendarMutations.js'\r\nimport actions from './moduleCalendarActions.js'\r\nimport getters from './moduleCalendarGetters.js'\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n state: state,\r\n mutations: mutations,\r\n actions: actions,\r\n getters: getters\r\n}\r\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","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","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CalendarView\"] = factory();\n\telse\n\t\troot[\"CalendarView\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"07e3\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"0a49\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(\"9b43\");\nvar IObject = __webpack_require__(\"626a\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar asc = __webpack_require__(\"cd1c\");\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0b21\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.2.2.28 Math.sign(x)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S, 'Math', { sign: __webpack_require__(\"96fb\") });\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"0fc9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"1169\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"2d95\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"11e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(\"52a7\");\nvar createDesc = __webpack_require__(\"4630\");\nvar toIObject = __webpack_require__(\"6821\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar has = __webpack_require__(\"69a8\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(\"9e1e\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"13ef\":\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(\"2350\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".cv-wrapper{display:flex;flex-direction:column;flex-grow:1;height:100%;min-height:100%;max-height:100%;overflow-x:hidden;overflow-y:hidden}.cv-wrapper,.cv-wrapper div{box-sizing:border-box;line-height:1em;font-size:1em}.cv-header-days{flex-grow:0;flex-basis:auto;border-width:0 0 0 1px}.cv-header-day,.cv-header-days{display:flex;flex-shrink:0;flex-flow:row nowrap}.cv-header-day{flex-grow:1;flex-basis:0;align-items:center;justify-content:center;text-align:center;border-width:1px 1px 0 0}.cv-weeks{flex-shrink:1;flex-basis:auto;flex-flow:column nowrap;border-width:0 0 1px 1px}.cv-week,.cv-weeks{display:flex;flex-grow:1;overflow-y:auto;-ms-overflow-style:none}.cv-week{flex-flow:row nowrap;min-height:3em;border-width:0;position:relative;width:100%}.cv-day,.cv-week{flex-shrink:0;flex-basis:0}.cv-day{display:flex;flex-grow:1;position:relative;position:-webkit-sticky;position:sticky;top:0;border-width:1px 1px 0 0}.cv-day,_:-ms-lang(x){position:relative}/ .cv-day-number{position:absolute;right:0}.cv-event{position:absolute;white-space:nowrap;overflow:hidden;background-color:#f7f7f7;border-width:1px}.cv-wrapper.wrap-event-title-on-hover .cv-event:hover{white-space:normal;z-index:1}.cv-day,.cv-event,.cv-header-day,.cv-header-days,.cv-week,.cv-weeks{border-style:solid;border-color:#ddd}.cv-event .endTime:before{content:\\\"-\\\"}.cv-day-number,.cv-event,.cv-header-day{padding:.2em}.cv-day-number:before{margin-right:.5em}.cv-event.offset0{left:0}.cv-event.offset1{left:14.28571%}.cv-event.offset2{left:28.57143%}.cv-event.offset3{left:42.85714%}.cv-event.offset4{left:57.14286%}.cv-event.offset5{left:71.42857%}.cv-event.offset6{left:85.71429%}.cv-event.span1{width:calc(14.28571% - .05em)}.cv-event.span2{width:calc(28.57143% - .05em)}.cv-event.span3{width:calc(42.85714% - .05em);text-align:center}.cv-event.span4{width:calc(57.14286% - .05em);text-align:center}.cv-event.span5{width:calc(71.42857% - .05em);text-align:center}.cv-event.span6{width:calc(85.71429% - .05em);text-align:center}.cv-event.span7{width:calc(100% - .05em);text-align:center}.cv-week::-webkit-scrollbar,.cv-weeks::-webkit-scrollbar{width:0;background:transparent}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"1654\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(\"71c1\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(\"30f1\")(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"1691\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"1af6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(\"63b6\");\n\n$export($export.S, 'Array', { isArray: __webpack_require__(\"9003\") });\n\n\n/***/ }),\n\n/***/ \"1bc3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"f772\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"1df8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(\"63b6\");\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(\"ead6\").set });\n\n\n/***/ }),\n\n/***/ \"1ec9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nvar document = __webpack_require__(\"e53d\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"20fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"2350\":\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"241e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"25b0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1df8\");\nmodule.exports = __webpack_require__(\"584a\").Object.setPrototypeOf;\n\n\n/***/ }),\n\n/***/ \"25eb\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"28a5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isRegExp = __webpack_require__(\"aae3\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar speciesConstructor = __webpack_require__(\"ebd6\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar toLength = __webpack_require__(\"9def\");\nvar callRegExpExec = __webpack_require__(\"5f1b\");\nvar regexpExec = __webpack_require__(\"520a\");\nvar fails = __webpack_require__(\"79e5\");\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\n__webpack_require__(\"214f\")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ \"294c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"29b5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(\"2350\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".cv-header{display:flex;flex:0 1 auto;flex-flow:row nowrap;align-items:center;min-height:2.5em;border-width:1px 1px 0 1px}.cv-header .periodLabel{display:flex;flex:1 1 auto;flex-flow:row nowrap;min-height:1.5em;line-height:1;font-size:1.5em}.cv-header,.cv-header button{border-style:solid;border-color:#ddd}.cv-header-nav,.cv-header .periodLabel{margin:.1em .6em}.cv-header-nav button,.cv-header .periodLabel{padding:.4em .6em}.cv-header button{box-sizing:border-box;line-height:1em;font-size:1em;border-width:1px}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2f21\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(\"79e5\");\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n\n\n/***/ }),\n\n/***/ \"3024\":\n/***/ (function(module, exports) {\n\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n/***/ }),\n\n/***/ \"30f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"b8e3\");\nvar $export = __webpack_require__(\"63b6\");\nvar redefine = __webpack_require__(\"9138\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar $iterCreate = __webpack_require__(\"8f60\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar getPrototypeOf = __webpack_require__(\"53e2\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"32a6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"241e\");\nvar $keys = __webpack_require__(\"c3a1\");\n\n__webpack_require__(\"ce7e\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"32fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"e53d\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"335c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"6b4c\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"355d\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"35e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\nmodule.exports = __webpack_require__(\"8e60\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"36bd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n\nvar toObject = __webpack_require__(\"4bf8\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nvar toLength = __webpack_require__(\"9def\");\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"36c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"335c\");\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"3702\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(\"481b\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"3a38\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"40c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"6b4c\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"45f2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"d9f6\").f;\nvar has = __webpack_require__(\"07e3\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"481b\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"499e\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-style-loader/lib/listToStyles.js\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nfunction listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n// CONCATENATED MODULE: ./node_modules/vue-style-loader/lib/addStylesClient.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addStylesClient; });\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\n\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of \n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickCalendarView.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!./QuickCalendarView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./QuickCalendarView.vue?vue&type=template&id=3d2531a5\"\nimport script from \"./QuickCalendarView.vue?vue&type=script&lang=js\"\nexport * from \"./QuickCalendarView.vue?vue&type=script&lang=js\"\nimport style0 from \"./QuickCalendarView.vue?vue&type=style&index=0&id=3d2531a5&prod&lang=scss\"\nimport style1 from \"./QuickCalendarView.vue?vue&type=style&index=1&id=3d2531a5&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 { 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","/**\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","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!./QuickCalendarView.vue?vue&type=style&index=1&id=3d2531a5&prod&lang=css\"","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","export default class Language {\n constructor (language, months, monthsAbbr, days) {\n this.language = language\n this.months = months\n this.monthsAbbr = monthsAbbr\n this.days = days\n this.rtl = false\n this.ymd = false\n this.yearSuffix = ''\n }\n\n get language () {\n return this._language\n }\n\n set language (language) {\n if (typeof language !== 'string') {\n throw new TypeError('Language must be a string')\n }\n this._language = language\n }\n\n get months () {\n return this._months\n }\n\n set months (months) {\n if (months.length !== 12) {\n throw new RangeError(`There must be 12 months for ${this.language} language`)\n }\n this._months = months\n }\n\n get monthsAbbr () {\n return this._monthsAbbr\n }\n\n set monthsAbbr (monthsAbbr) {\n if (monthsAbbr.length !== 12) {\n throw new RangeError(`There must be 12 abbreviated months for ${this.language} language`)\n }\n this._monthsAbbr = monthsAbbr\n }\n\n get days () {\n return this._days\n }\n\n set days (days) {\n if (days.length !== 7) {\n throw new RangeError(`There must be 7 days for ${this.language} language`)\n }\n this._days = days\n }\n}\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Afrikaans',\n ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'],\n ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Arabic',\n ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوڤمبر', 'ديسمبر'],\n ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوڤمبر', 'ديسمبر'],\n ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت']\n)\n\nlanguage.rtl = true\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Bulgarian',\n ['Януари', 'Февруари', 'Март', 'Април', 'Май', 'Юни', 'Юли', 'Август', 'Септември', 'Октомври', 'Ноември', 'Декември'],\n ['Ян', 'Фев', 'Мар', 'Апр', 'Май', 'Юни', 'Юли', 'Авг', 'Сеп', 'Окт', 'Ное', 'Дек'],\n ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Bosnian',\n ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Juni', 'Juli', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],\n ['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Catalan',\n ['Gener', 'Febrer', 'Març', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Setembre', 'Octubre', 'Novembre', 'Desembre'],\n ['Gen', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Des'],\n ['Diu', 'Dil', 'Dmr', 'Dmc', 'Dij', 'Div', 'Dis']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Czech',\n ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'],\n ['led', 'úno', 'bře', 'dub', 'kvě', 'čer', 'čec', 'srp', 'zář', 'říj', 'lis', 'pro'],\n ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Danish',\n ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'German',\n ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],\n ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Estonian',\n ['Jaanuar', 'Veebruar', 'Märts', 'Aprill', 'Mai', 'Juuni', 'Juuli', 'August', 'September', 'Oktoober', 'November', 'Detsember'],\n ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],\n ['P', 'E', 'T', 'K', 'N', 'R', 'L']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Greek',\n ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάϊος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'],\n ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαι', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'],\n ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'English',\n ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Spanish',\n ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],\n ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],\n ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Persian',\n ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],\n ['فرو', 'ارد', 'خرد', 'تیر', 'مرد', 'شهر', 'مهر', 'آبا', 'آذر', 'دی', 'بهم', 'اسف'],\n ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Finnish',\n ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'],\n ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],\n ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Faroese',\n ['Januar', 'Februar', 'Mars', 'Apríl', 'Mai', 'Juni', 'Juli', 'August', 'Septembur', 'Oktobur', 'Novembur', 'Desembur'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n ['Sun', 'Mán', 'Týs', 'Mik', 'Hós', 'Frí', 'Ley']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'French',\n ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],\n ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Déc'],\n ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Georgia',\n ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'],\n ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'],\n ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Hebrew',\n ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],\n ['ינו', 'פבר', 'מרץ', 'אפר', 'מאי', 'יונ', 'יול', 'אוג', 'ספט', 'אוק', 'נוב', 'דצמ'],\n ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש']\n)\n\nlanguage.rtl = true\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Croatian',\n ['Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac'],\n ['Sij', 'Velj', 'Ožu', 'Tra', 'Svi', 'Lip', 'Srp', 'Kol', 'Ruj', 'Lis', 'Stu', 'Pro'],\n ['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Hungarian',\n ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],\n ['Jan', 'Febr', 'Márc', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szept', 'Okt', 'Nov', 'Dec'],\n ['Vas', 'Hét', 'Ke', 'Sze', 'Csü', 'Pén', 'Szo']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Indonesian',\n ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'],\n ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Icelandic',\n ['Janúar', 'Febrúar', 'Mars', 'Apríl', 'Maí', 'Júní', 'Júlí', 'Ágúst', 'September', 'Október', 'Nóvember', 'Desember'],\n ['Jan', 'Feb', 'Mars', 'Apr', 'Maí', 'Jún', 'Júl', 'Ágú', 'Sep', 'Okt', 'Nóv', 'Des'],\n ['Sun', 'Mán', 'Þri', 'Mið', 'Fim', 'Fös', 'Lau']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Italian',\n ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\n ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'],\n ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Japanese',\n ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n ['日', '月', '火', '水', '木', '金', '土']\n)\n\nlanguage.yearSuffix = '年'\nlanguage.ymd = true\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Korean',\n ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],\n ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],\n ['일', '월', '화', '수', '목', '금', '토']\n)\nlanguage.yearSuffix = '년'\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Luxembourgish',\n ['Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mäi', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],\n ['Jan', 'Feb', 'Mäe', 'Abr', 'Mäi', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Lithuanian',\n ['Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 'Liepa', 'Rugpjūtis', 'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis'],\n ['Sau', 'Vas', 'Kov', 'Bal', 'Geg', 'Bir', 'Lie', 'Rugp', 'Rugs', 'Spa', 'Lap', 'Gru'],\n ['Sek', 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš']\n)\n\nlanguage.ymd = true\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Latvian',\n ['Janvāris', 'Februāris', 'Marts', 'Aprīlis', 'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts', 'Septembris', 'Oktobris', 'Novembris', 'Decembris'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jūn', 'Jūl', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Mongolia',\n ['1 дүгээр сар', '2 дугаар сар', '3 дугаар сар', '4 дүгээр сар', '5 дугаар сар', '6 дугаар сар', '7 дугаар сар', '8 дугаар сар', '9 дүгээр сар', '10 дугаар сар', '11 дүгээр сар', '12 дугаар сар'],\n ['1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', '9-р сар', '10-р сар', '11-р сар', '12-р сар'],\n ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя']\n)\n\nlanguage.ymd = true\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Norwegian Bokmål',\n ['Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Dutch',\n ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Polish',\n ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'],\n ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],\n ['Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Brazilian',\n ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Romanian',\n ['Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'],\n ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sep', 'Oct', 'Noi', 'Dec'],\n ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Russian',\n ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n ['Янв', 'Февр', 'Март', 'Апр', 'Май', 'Июнь', 'Июль', 'Авг', 'Сент', 'Окт', 'Нояб', 'Дек'],\n ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Slovakian',\n ['január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december'],\n ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'],\n ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Sloveian',\n ['Januar', 'Februar', 'Marec', 'April', 'Maj', 'Junij', 'Julij', 'Avgust', 'September', 'Oktober', 'November', 'December'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],\n ['Ned', 'Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Serbian in Cyrillic script',\n ['Јануар', 'Фебруар', 'Март', 'Април', 'Мај', 'Јун', 'Јул', 'Август', 'Септембар', 'Октобар', 'Новембар', 'Децембар'],\n ['Јан', 'Феб', 'Мар', 'Апр', 'Мај', 'Јун', 'Јул', 'Авг', 'Сеп', 'Окт', 'Нов', 'Дец'],\n ['Нед', 'Пон', 'Уто', 'Сре', 'Чет', 'Пет', 'Суб']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Serbian',\n ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Jun', 'Jul', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],\n ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Swedish',\n ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],\n ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Thai',\n ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'],\n ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],\n ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Turkish',\n ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],\n ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],\n ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Ukraine',\n ['Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'],\n ['Січ', 'Лют', 'Бер', 'Квіт', 'Трав', 'Чер', 'Лип', 'Серп', 'Вер', 'Жовт', 'Лист', 'Груд'],\n ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Urdu',\n ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']\n)\n\nlanguage.rtl = true\n\nexport default language\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nexport default new Language(\n 'Vietnamese',\n ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n ['T 01', 'T 02', 'T 03', 'T 04', 'T 05', 'T 06', 'T 07', 'T 08', 'T 09', 'T 10', 'T 11', 'T 12'],\n ['CN', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7']\n)\n// eslint-disable-next-line\n;\n","import Language from '../Language'\n\nconst language = new Language(\n 'Chinese',\n ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],\n ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],\n ['日', '一', '二', '三', '四', '五', '六']\n)\nlanguage.yearSuffix = '年'\n\nexport default language\n// eslint-disable-next-line\n;\n","import af from './translations/af'\nimport ar from './translations/ar'\nimport bg from './translations/bg'\nimport bs from './translations/bs'\nimport ca from './translations/ca'\nimport cs from './translations/cs'\nimport da from './translations/da'\nimport de from './translations/de'\nimport ee from './translations/ee'\nimport el from './translations/el'\nimport en from './translations/en'\nimport es from './translations/es'\nimport fa from './translations/fa'\nimport fi from './translations/fi'\nimport fo from './translations/fo'\nimport fr from './translations/fr'\nimport ge from './translations/ge'\nimport he from './translations/he'\nimport hr from './translations/hr'\nimport hu from './translations/hu'\nimport id from './translations/id'\nimport is from './translations/is'\nimport it from './translations/it'\nimport ja from './translations/ja'\nimport ko from './translations/ko'\nimport lb from './translations/lb'\nimport lt from './translations/lt'\nimport lv from './translations/lv'\nimport mn from './translations/mn'\nimport nbNO from './translations/nb-NO'\nimport nl from './translations/nl'\nimport pl from './translations/pl'\nimport ptBR from './translations/pt-BR'\nimport ro from './translations/ro'\nimport ru from './translations/ru'\nimport sk from './translations/sk'\nimport slSI from './translations/sl-SI'\nimport srCYRL from './translations/sr-CYRL'\nimport sr from './translations/sr'\nimport sv from './translations/sv'\nimport th from './translations/th'\nimport tr from './translations/tr'\nimport uk from './translations/uk'\nimport ur from './translations/ur'\nimport vi from './translations/vi'\nimport zh from './translations/zh'\n\nexport {\n af,\n ar,\n bg,\n bs,\n ca,\n cs,\n da,\n de,\n ee,\n el,\n en,\n es,\n fa,\n fi,\n fo,\n fr,\n ge,\n he,\n hr,\n hu,\n id,\n is,\n it,\n ja,\n ko,\n lb,\n lt,\n lv,\n mn,\n nbNO,\n nl,\n pl,\n ptBR,\n ro,\n ru,\n sk,\n slSI,\n srCYRL,\n sr,\n sv,\n th,\n tr,\n uk,\n ur,\n vi,\n zh\n}\n// eslint-disable-next-line\n;\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":""}